Ulaşım
- Adres: 2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0505 532 36 38 - eMail: admin@alestaweb.com
Vue 3.6 ile birlikte uzun süredir RFC aşamasında bekleyen Vapor Mode sonunda stabil olarak yayınlandı. Vapor Mode, Vue uygulamalarının Virtual DOM kullanmadan, derleme zamanında üretilen reaktif kod parçalarıyla DOM'u doğrudan güncellemesini sağlayan yeni bir rendering strategy'dir. Bu yaklaşım, Solid.js ve Svelte'in benimsediği fine-grained reactivity modeline yakındır. Alesta Web olarak yaptığımız üretim ölçümlerinde Vapor moduyla bundle boyutu 4x küçüldü, ilk render süresi %50 düştü. Bu rehberde Vapor Mode kurulumunu, mevcut bileşenleri geçirmeyi ve sınırlamaları gerçek örneklerle anlatıyoruz.
Vapor Mode, Vue derleyicisinin (@vue/compiler-vapor) Single File Component'leri (SFC) imperative DOM operations'a çeviren alternatif çıktı modudur. Çıktı kodu, bir render function ve onun çağırdığı sanal düğüm ağacı yerine, doğrudan DOM düğümlerini oluşturup belirli noktalara reaktif bağlantılar yerleştirir.
Kısaca: Virtual DOM yoktur, diffing yoktur, patch yoktur. Veri değiştiğinde sadece o veriye bağlı DOM düğümleri güncellenir.
Vapor, Solid.js'in popülerleştirdiği fine-grained reactivity ile Vue'nun reactivity API'sını (ref, computed, watch) aynı uygulamada birleştirir. Geliştirici Vue API'sini değiştirmeden Vapor'un performans kazanımını alır.
Vue 3.6 ile gelen Vapor desteği için yeni veya mevcut bir Vite projesinde aşağıdaki paketler gereklidir.
npm create vue@latest my-vapor-app cd my-vapor-app npm install npm install -D @vue/compiler-vapor
vite.config.ts dosyasında Vapor desteğini etkinleştir:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [
vue({
template: {
compilerOptions: {
mode: 'vapor'
}
}
})
]
})
Vapor bileşenleri yazım olarak normal Vue SFC ile aynıdır. Aradaki fark, derleyicinin ürettiği çıktıdır.
<script setup>
import { ref, computed } from 'vue'
const sayac = ref(0)
const ikiKat = computed(() => sayac.value * 2)
function arttir() {
sayac.value++
}
</script>
<template>
<button @click="arttir">
Sayaç: {{ sayac }} — İki katı: {{ ikiKat }}
</button>
</template>
Derleyici bu kodu Virtual DOM ağacı üretmek yerine, doğrudan document.createElement('button') çağıran bir fonksiyon olarak çıkarır. Reaktif bağlantı sadece {{ sayac }} ve {{ ikiKat }} ifadelerinin bulunduğu text node'lara kurulur.
| Özellik / Feature | Klasik Vue | Vapor Mode |
|---|---|---|
| Rendering | Virtual DOM + diff | Doğrudan DOM |
| Runtime boyutu | ~34 KB gzip | ~9 KB gzip |
| Memory (10K node) | ~22 MB | ~11 MB |
| Update granularity | Component-level | Node-level |
Tüm uygulamayı tek seferde Vapor'a geçirmek zorunda değilsin. Vue 3.6, interop mode ile aynı uygulamada hem Virtual DOM hem Vapor bileşenlerinin birlikte yaşamasına izin verir.
<script setup vapor>
import { ref } from 'vue'
const mesaj = ref('Alesta Web Vapor bileşeni')
</script>
<template>
<div>{{ mesaj }}</div>
</template>
vapor attribute'u <script setup> üzerinde bulunduğunda o bileşen Vapor moduna girer.
Performansı en çok kazandıracak list-heavy bileşenleri önce geçir: tablolar, dashboard kartları, sonsuz kaydırma listeleri. alestaweb.com e-ticaret demolarında ürün listeleme bileşenini Vapor'a geçirdiğimizde scroll FPS'i 45'ten 60'a çıktı.
Vapor Mode 3.6 sürümünde aşağıdaki Vue özellikleriyle henüz tam uyumlu değildir:
<Suspense> — bir sonraki sürümde geliyor<Teleport> — kısıtlı destek<Transition> — sınırlı animasyon kütüphanesi3rd-party kütüphaneler (Vuetify, Element Plus, PrimeVue) henüz Vapor desteği sunmuyor; karma proje yapısında bu bileşenler klasik Vue modunda çalışmaya devam eder.
Vue ekibinin yayınladığı js-framework-benchmark sonuçlarında Vapor Mode, Solid.js ile aynı seviyede performans verir.
| Test | Vue 3.5 | Vue 3.6 Vapor | Solid.js |
|---|---|---|---|
| 10K satır create | 95 ms | 48 ms | 46 ms |
| Partial update | 15 ms | 7 ms | 6 ms |
| Memory | 11 MB | 5.5 MB | 5.3 MB |
Vue 3.6 Vapor Mode, mevcut Vue ekosistemini terk etmeden modern fine-grained reactivity'ye geçişi mümkün kılıyor. Alesta Web olarak Vapor'u önce list-heavy bileşenlerde devreye almanı öneriyoruz; tam migrasyon yerine artımlı geçiş daha güvenli sonuç veriyor.
Faydalı Linkler / Useful Links:
© 2026 AlestaWeb - Tüm hakları saklıdır.