Web geliştirme dünyasında jQuery’nin efsanevi rolünü kim inkâr edebilir? Basit DOM manipülasyonundan karmaşık etkileşimlere kadar her şeyi kolaylaştıran bu kütüphane, 2000’li yılların başında tarayıcı uyumsuzluklarının ve kısıtlı API’ların gölgesinde doğmuştu. Peki ya bugün, 2025’e geldiğimizde, aynı amaca hizmet edecek modern bir araç nasıl tasarlanır?
İşte bu sorunun cevabı, bQuery.js projesinin doğuş hikayesini oluşturuyor. Geçtiğimiz yılın sonbaharında başlayan bu yolculuk, artık tamamen yeni bir boyuta ulaştı: bQuery.js, artık sadece bir DOM yardımcı kütüphanesi değil, tam yığın bir framework haline geldi. Ve tüm bu gelişmelerle birlikte, projenin resmi dokümantasyon sitesi de bquery.js.org adresinde yayınlanmaya başladı.
Sıfırdan Başlayan İlkeler: bQuery.js’in Temel Taşları
Projenin ilk versiyonunu tasarlarken, geliştiricilerin karşılaştığı üç temel zorluktan yola çıkıldı. Bu zorluklar, aracın gelecekteki tüm gelişimini şekillendiren kesinlikle vazgeçilmez ilkeler olarak belirlendi:
- Herhangi bir derleme adımı zorunlu olmamalı. Kullanıcılar, tek bir
<script>etiketiyle HTML dosyasına yerleştirilen bir dosyadan anlamlı kodlar yazabilmeli.node_modules, paket yöneticileri ya da derleyici ayarları olmadan. - Tek bir giriş noktası, hem CDN hem de npm üzerinden kullanılabilmeli. API, her iki dağıtım yolunda da aynı şekilde çalışmalı. Ayrı "CDN sürümü" ya da "modül sürümü" gibi kafa karıştırıcı durumlar olmamalı.
- Gerçek anlamda ağaç sallama (tree-shaking) desteklenmeli. Kullanıcılar sadece ihtiyaç duydukları modülleri içe aktarabilmeli ve projeye sığdırılan her ek özellik, gereksiz yük oluşturmamalı.
Bu ilkeler, projenin tasarımında neredeyse otomatik kararlar alınmasını sağladı. Ayrıca, API’nin maliyet şeffaflığı sayesinde, kütüphanenin büyümesiyle birlikte bile kullanıcıların yükünü artırmadan yeni özellikler eklenebildi.
İlk Sürüm: Sadece Bir DOM Yardımcısı
Projenin ilk hali, beklendiği gibi son derece basit ve odaklıydı:
import { $, $$ } from '@bquery/bquery/core';
$('#button').on('click', () => {
$$('.card').addClass('hovered');
});Bu kod parçası, tip güvenli, zincirlenebilir ve modern bir DOM manipülasyon aracı sunuyordu. Herhangi bir derleme süreci gerektirmiyordu ve harici bağımlılıkları yoktu. Kısacası, "jQuery’nin ne olduğunu anlayan bir versiyonu" diyebiliriz.
Kullanıcılar bu basitlikten memnun kaldı ve projeyi benimsedi. Ancak hikaye burada bitmedi.
Dönüm Noktası: Reaktiflik ve Bileşenler
Projenin asıl değişim noktası, reaktiflik özelliklerinin eklenmesiyle başladı. Geliştiriciler, DOM manipülasyonunu sadece bir kez gerçekleştirilen bir işlem olarak değil, durumun sürekli izlendiği dinamik bir ifade olarak kullanmaya başladılar. Bu yaklaşımın doğal sonucuysa bileşenler, yönlendirme (router) ve sunucu tarafı render (SSR) gibi özelliklerin ortaya çıkması oldu.
Önemli olan nokta ise hiçbir ilkenin çiğnenmemesiydi. Yeni modüller, sadece $ fonksiyonunu kullanan geliştiricilerin yükünü artırmıyordu. Tek bir giriş noktası ilkesi korunuyordu ve CDN üzerinden erişim hâlâ mümkündü. Kullanıcı dostu arayüzün korunması, projenin gelişiminde öncelikli hedeflerden biri oldu.
bQuery.js’in Sunduğu Güçlü Özellikler
Bugün bQuery.js, sadece DOM manipülasyonundan ibaret değil. İşte framework’ün sunduğu bazı önemli özellikler:
- Reaktif durum yönetimi: Sinyaller ve efektler sayesinde, durum değişiklikleri otomatik olarak arayüzde güncelleniyor.
- Bileşen sistemi: Doğal Web Components API’sine dayalı olarak çalışan bileşenler, sanal DOM ya da özel bir render motoru gerektirmiyor.
- Yönlendirme (Router): Korumalı rotalar, tembel yükleme, gezinme durumları ve bileşen tabanlı yönlendirme özellikleri sunuyor.
- Uluslararasılaşma (i18n): Yerel ayarların otomatik algılanması, sağdan sola destek, göreli zaman formatları ve liste biçimlendirmesi gibi özellikler içeriyor.
- Erişilebilirlik (a11y): Canlı bölgeler, odak yönetimi, hareket tercihi algılama, zorunlu renk modu ve kaydırma kilidi gibi araçlar sunuyor.
- HTTP ve veri alma (fetch) bileşenleri: Sinyallerle entegre çalışan polling, sayfalama, REST yardımcıları ve WebSocket/SSE destekleri bulunuyor.
- Sürükle bırak (Drag & Drop): Sıralanabilir listeler, ızgara hizalama, klavye desteği ve görünüm sınırlamaları gibi gelişmiş özellikler içeriyor.
- Sunucu tarafı render (SSR): Akışlı render, sınırlar, kenar hesaplamaları ve yanıt önbellekleme özellikleri sunuyor.
- Sunucu runtime’ı: Ortam değişkenleri, çerezler, akışlı yanıtlar ve
app.listen()gibi özelliklerle tam bir sunucu uygulaması oluşturmayı mümkün kılıyor.
- Geliştirici araçları, test yardımcıları, eklenti sistemi ve medya bileşenleri gibi ek özellikler de mevcut.
Aynı API, Farklı Kullanım Senaryoları
bQuery.js’in en dikkat çekici yanı, bütün bu özellikleri sunarken orijinal ilkelerinden hiçbirini çiğnememiş olması. Kullanıcılar hâlâ sadece bir <script> etiketiyle basit DOM işlemleri yapabilirken, aynı API’yı kullanarak tam anlamıyla modern bir uygulama da geliştirebiliyor. İşte birkaç örnek:
// Minimal DOM yardımcıları
import { $, $$ } from '@bquery/bquery/core';
// Reaktiflik özellikleri
import { signal, computed, effect } from '@bquery/bquery/reactive';
// Tam yığın kullanım
import {
$,
signal,
component,
registerDefaultComponents,
defineBqueryConfig,
} from '@bquery/bquery';Tüm modüller, açıkça belirtilmiş giriş noktaları üzerinden kullanılabiliyor ve TypeScript destekli olarak tasarlanıyor. Ağaç sallama destekleniyor ve CDN üzerinden erişim, projenin temel bir parçası olarak korunuyor.
Geleceğe Bakış: bQuery.js’in Yol Haritası
bQuery.js’in hikayesi, sadece bir kütüphanenin ötesinde, modern web geliştirme anlayışının nasıl evrildiğini de gösteriyor. Geliştiricilerin ihtiyaçlarına yanıt verirken, basitlik ve esneklik arasındaki dengeyi korumak, projenin başarısının temelini oluşturuyor.
Gelecekte, framework’ün daha da genişleyen ekosistemi ve topluluğuyla birlikte, geliştiricilere hem basit projeler hem de karmaşık uygulamalar için güvenilir bir temel sunmaya devam edeceği açık. Peki ya siz? bQuery.js’in size sunduğu bu yeni dünyayı keşfetmeye hazır mısınız?
Yapay zeka özeti
jQuery’nin basitliğinden yola çıkan bQuery.js, bugünün web geliştirme ihtiyaçlarına yanıt veren tam yığın bir framework. Detaylı özellikler ve kullanım örnekleriyle tanışın.