Sobes.tech
Middle

Vue CLI мисалында ысык кайра жүктөө (hot reload) кантип иштейт?

sobes.tech AI

AIден жооп

Vue CLI webpack-dev-server колдонуп, ал Hot Module Replacement (HMR) түзөт.

Vue үчүн HMR иштөө процесси төмөндөгүчө:

  1. Дамуу серверин иштетүү: npm run serve командасы менен webpack-dev-server серверин иштеткенде, ал серверди баштап, долбоордун файлдарын көзөмөлдөй баштайт.
  2. Файл өзгөртүү: Дамуу иштеп чыгуучу файлда өзгөртүүлөрдү сактаганда (.vue, .js, .css жана башка).
  3. Өзгөртүүлөрдү аныктоо: webpack-dev-server өзгөртүүнү аныктайт.
  4. Модулду кайра куруу: Webpack өзгөртүлгөн модулду (мисалы, Vue компоненти) кайра курат.
  5. Жаңылоо пакетін жөнөтүү: webpack-dev-server жаңылоо пакетін (hotswap update) WebSocket аркылуу браузерге жөнөтөт.
  6. Жаңылоо колдонуу: HMRдин кардар бөлүгү (курулуш кодуна киргизилген), пакетті алгандан кийин аны колдонууга аракет кылат. Vue компоненттери үчүн бул, эски компоненттин аныктамасын жаңы менен алмаштыруу, учурдагы күйүн сактоо (мисалы, data() ичиндеги маалыматтарды) билдирет.
  7. DOM жаңылоо: Vue жаңы шаблон же компонент логикасын колдонуп, DOM реактивдүү түрдө жаңыланат, бүт баракчаны кайра жүктөбөстөн.

Жаңылоо пакети структурасынын мисалы:

{
  "hash": "...", // Билдүүнүн хеши
  "c": { // Жаңыртылган бөлүктөр
    "src/components/HelloWorld.vue": true // Модуль жаңыланат
  }
}

HMR кардар коду бул пакетті алат жана src/components/HelloWorld.vue үчүн жаңыртуу логикасын ишке ашырат.

// HMR кардар коду ичинде псевдокод мисалы
if (module.hot) {
  module.hot.accept('./components/HelloWorld.vue', function() {
    // Vue компонентинин жаңыртуу логикасы, абалын сактоо менен
    // Адатта, бул vue-loader жана webpack-dev-server менен башкарылат
  });
}

Ошентип, компонентте өзгөртүү болсо, ошол компонент браузердин эсинде гана жаңыртылат, бүт баракча эмес, бул өнүктүрүүнү кыйла тездетет.