Sobes.tech
Middle

Vue CLI örneğiyle sıcak yeniden yükleme (hot reload) nasıl çalışır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Vue CLI, hot module replacement (HMR) içeren webpack-dev-server kullanır.

Vue için HMR'nin çalışma süreci şu şekildedir:

  1. Geliştirme sunucusunu başlatma: npm run serve komutu çalıştırıldığında, webpack-dev-server sunucuyu başlatır ve proje dosyalarını izlemeye başlar.
  2. Dosya değişikliği: Geliştirici bir dosyada (.vue, .js, .css vb.) değişiklik kaydettiğinde.
  3. Değişikliklerin tespiti: webpack-dev-server değişikliği algılar.
  4. Modül yeniden derleme: Webpack, değiştirilen modülü yeniden derler (örneğin, bir Vue bileşeni).
  5. Güncellemenin gönderilmesi: webpack-dev-server, güncelleme paketini (hotswap update) WebSocket üzerinden tarayıcıya gönderir.
  6. Güncellemenin uygulanması: HMR'nin istemci tarafı (derleme koduna gömülü), paketi alır ve uygulamaya çalışır. Vue bileşenleri için bu, eski bileşen tanımını yenisiyle değiştirirken, bileşenin mevcut durumu (örneğin, data() içeriği) korunur.
  7. DOM güncellemesi: Vue, yeni şablon veya bileşen mantığını kullanarak DOM'u reaktif şekilde günceller, sayfayı yeniden yüklemeden.

Güncelleme paketinin yapısına örnek:

{
  "hash": "...", // Derleme hash'i
  "c": { // Güncellenen derleme parçaları
    "src/components/HelloWorld.vue": true // Güncellenmesi gereken modül
  }
}

HMR istemci kodu bu paketi alır ve src/components/HelloWorld.vue için güncelleme mantığını çalıştırır.

// HMR istemci kodu içinde örnek pseudokod
if (module.hot) {
  module.hot.accept('./components/HelloWorld.vue', function() {
    // Vue bileşenini güncelleme mantığı, durumu koruyarak
    // Normalde bu, vue-loader ve webpack-dev-server tarafından yönetilir
  });
}

Bu şekilde, bileşende yapılan değişiklikler sadece bu bileşeni bellekte günceller, sayfanın tamamını değil, bu da geliştirmeyi önemli ölçüde hızlandırır.