Vue.js’nin Temelini Anlamak: Saf JavaScript ile Basit Bir Vue.js Benzeri Framework Oluşturma
Vue.js, modern web geliştirme dünyasında en popüler frameworklerden biri haline geldi. Ancak, Vue.js gibi bir framework’ün arka planında…
Vue.js’nin Temelini Anlamak: Saf JavaScript ile Basit Bir Vue.js Benzeri Framework Oluşturma
Vue.js, modern web geliştirme dünyasında en popüler frameworklerden biri haline geldi. Ancak, Vue.js gibi bir framework’ün arka planında neler olup bittiğini anlamak, hem bu framework’ü daha etkili kullanmanıza hem de genel olarak JavaScript yeteneklerinizi geliştirmenize yardımcı olabilir. Bu yazıda, saf JavaScript kullanarak Vue.js’nin temel özelliklerinden bazılarını nasıl yeniden oluşturabileceğimizi göstereceğim. Hadi başlayalım!
1. Giriş
Vue.js, veri ile kullanıcı arayüzleri arasında reaktif bağlar kurarak, veri değişikliklerini otomatik olarak DOM’a yansıtan bir framework’tür. Bu yazıda, Vue.js’nin temel reaktif sistemini ve şablon derleme (template compilation) mantığını saf JavaScript kullanarak nasıl inşa edebileceğimizi göreceğiz. Amacımız, basit bir Vue.js benzeri framework oluşturmak ve onun nasıl çalıştığını anlamaktır.
2. Reaktif Sistem Oluşturma
Vue.js’nin bel kemiği, reaktif sistemdir. Bu sistem, bir veri değiştiğinde otomatik olarak bu değişikliği izleyen tüm DOM elemanlarını günceller. Bu işlevi saf JavaScript ile gerçekleştirmek için, bir Reactive sınıfı oluşturalım.
class Reactive {
constructor(data) {
this.data = data;
this.watchers = {};
for (const key in data) {
this.watchers[key] = [];
let value = data[key];
Object.defineProperty(this.data, key, {
get: () => value,
set: newValue => {
value = newValue;
this.notify(key);
}
});
}
}
notify(key) {
this.watchers[key].forEach(watcher => watcher(this.data[key]));
}
watch(key, watcher) {
this.watchers[key].push(watcher);
}
}
Bu Reactive sınıfı, bir nesneyi alır ve ona reaktif özellikler ekler. Bir özellik değiştiğinde, o özelliğe bağlı olan tüm izleyiciler (watchers) tetiklenir. Bu şekilde, veri değişiklikleri otomatik olarak ilgili DOM elemanlarına yansıtılabilir.
3. Basit Bir Şablon İşleyici
Vue.js, HTML şablonlarını alır ve onları reaktif veri bağlama ile işleyerek dinamik olarak günceller. Bu işlevi saf JavaScript ile gerçekleştirmek için, bir MiniVue sınıfı oluşturalım.
class MiniVue {
constructor(options) {
this.el = document.querySelector(options.el);
this.data = new Reactive(options.data);
this.compile(this.el);
for (const key in this.data.data) {
this.data.watch(key, value => {
this.updateDOM(key, value);
});
}
}
compile(el) {
const nodes = el.querySelectorAll('[v-bind]');
nodes.forEach(node => {
const key = node.getAttribute('v-bind');
node.textContent = this.data.data[key];
});
}
updateDOM(key, value) {
const nodes = this.el.querySelectorAll(`[v-bind="${key}"]`);
nodes.forEach(node => {
node.textContent = value;
});
}
}
Bu MiniVue sınıfı, bir HTML elementini (el) alır ve bu elementin içindeki v-bind direktiflerini işleyerek, direktiflerin içeriğini data ile doldurur. Ayrıca, veri değişiklikleri olduğunda ilgili DOM elemanlarını otomatik olarak günceller.
4. MiniVue’yu Kullanarak Bir Örnek
Şimdi, bu mini framework’ü kullanarak bir örnek oluşturalım. Bu örnekte, kullanıcı bir input alanına yazdıkça, bu veri bir paragraf elementinde anında görüntülenecek.
<div id="app">
<p v-bind="message"></p>
<input type="text" id="input">
</div>
<script>
const app = new MiniVue({
el: '#app',
data: {
message: 'Hello, MiniVue!'
}
});
// Input ile veri bağlama
document.getElementById('input').addEventListener('input', function() {
app.data.data.message = this.value;
});
</script>
Bu örnekte, v-bind=”message” ile bağlanmış olan <p> etiketi, input alanına yazılan metinle güncellenir. Bu, Vue.js’nin en temel reaktif bağlama özelliklerinden birini basit bir şekilde gösterir.
5. Sonuç ve Yorumlar
Vue.js, burada gösterdiğimizden çok daha fazlasını yapar; bileşenler, yönlendirme, durum yönetimi gibi gelişmiş özellikler sunar. Ancak, bu yazıda gördüğümüz gibi, Vue.js’nin temelindeki reaktif sistem ve şablon işleme mantığını anlamak, framework’ün nasıl çalıştığını daha iyi kavramamıza yardımcı olabilir.
Bu basit MiniVue örneği, Vue.js’nin gücünün bir kısmını saf JavaScript kullanarak yeniden oluşturmamızı sağladı. Tabii ki, Vue.js’nin sunduğu tüm özellikleri kapsayacak bir sistem kurmak çok daha karmaşık olurdu, ancak bu başlangıç seviyesi örnek, Vue.js’nin temel prensiplerini anlamak için iyi bir adımdır.
6. Gelecek Adımlar
Bu örnek üzerinden ilerleyerek şunları yapmayı deneyebilirsiniz:
• DOM manipülasyonunu daha da genişletmek.
• v-if, v-for gibi direktifleri eklemek.
• Bileşen yapısını desteklemek.
Vue.js’nin arkasındaki bu temel prensipleri anlamak, size sadece Vue.js’yi değil, aynı zamanda diğer reaktif framework’leri de daha iyi anlamanıza yardımcı olacaktır. Kendi framework’ünüzü yazmak, bu süreçte öğrendiklerinizi pekiştirmenin harika bir yoludur.
Bu basit örnek, Vue.js’nin ardındaki bazı önemli konseptleri saf JavaScript ile nasıl inşa edebileceğinizi göstermeyi amaçlıyor. Kendi uygulamalarınızı geliştirdikçe, bu temelleri nasıl genişletebileceğinizi keşfetmek, programlama becerilerinizi derinleştirmenin eğlenceli ve eğitici bir yolu olabilir.
메타데이터
- post_id
- 1c329083e715
- slug
- vue-jsnin-temelini-anlamak-saf-javascript-ile-basit-bir-vue-js-benzeri-framework-oluşturma-1c329083e715
- url
- https://medium.com/@erbeyinn/vue-jsnin-temelini-anlamak-saf-javascript-ile-basit-bir-vue-js-benzeri-framework-olu%C5%9Fturma-1c329083e715
- canonical_url
- https://medium.com/@erbeyinn/vue-jsnin-temelini-anlamak-saf-javascript-ile-basit-bir-vue-js-benzeri-framework-olu%C5%9Fturma-1c329083e715
- author_url
- https://medium.com/@erbeyinn
- status
- ok
- fetched_at
- 2026-07-23 01:39:01