Middle
Ինչպես է աշխատում տաք վերաթողարկումը (hot reload) Vue CLI-ի օրինակով։
sobes.tech AI
Պատասխան AI-ից
Vue CLI օգտագործում է webpack-dev-server, որը ներառում է Hot Module Replacement (HMR):
HMR-ի աշխատանքային գործընթացը Vue-ի համար հետևյալն է.
- Դիվելոփմենտ սերվերի մեկնարկ: Երբ գործարկվում է
npm run serve, webpack-dev-server-ը սկսում է սերվերը և սկսում է հետևել նախագծի ֆայլերին: - Ֆայլի փոփոխություն: Երբ ծրագրավորողը պահում է փոփոխությունները ֆայլում (
.vue,.js,.cssև այլն): - Փոփոխությունների հայտնաբերում: webpack-dev-server-ը հայտնաբերում է փոփոխությունը:
- Մոդուլի վերականգնում: Webpack-ը վերականգնում է փոփոխված մոդուլը (օրինակ, Vue կոմպոնենտ):
- Թարմացման ուղարկում: webpack-dev-server-ը ուղարկում է թարմացման փաթեթը (hotswap update) բրաուզերին WebSocket-ի միջոցով:
- Թարմացման կիրառումը: HMR-ի հաճախորդային մասը (կառուցման կոդում ինտեգրված) ստանում է փաթեթը և փորձում է այն կիրառել: Vue կոմպոնենտների համար դա նշանակում է հին կոմպոնենտի սահմանումը փոխարինել նորով, պահպանելով ներկայիս վիճակը (օրինակ,
data()-ի տվյալները): - DOM-ի թարմացում: Vue-ն ռեակտիվ կերպով թարմացնում է DOM-ը նոր շաբլոնով կամ կոմպոնենտի լոգիկայով, առանց ամբողջ էջը վերաթողարկելու:
Թարմացման փաթեթի կառուցվածքի օրինակ:
{
"hash": "...", // Կառուցման հեշ
"c": { // Թարմացված կառուցման մասեր
"src/components/HelloWorld.vue": true // Մոդուլ, որը պետք է թարմացվի
}
}
HMR-ի հաճախորդային կոդը ստանում է այս փաթեթը և իրականացնում թարմացման լոգիկան src/components/HelloWorld.vue-ի համար:
// Pseudocode օրինակ HMR-ի հաճախորդային կոդում
if (module.hot) {
module.hot.accept('./components/HelloWorld.vue', function() {
// Vue կոմպոնենտի թարմացման լոգիկա, վիճակի պահպանմամբ
// Զուգահեռաբար, դա կառավարում է vue-loader-ը webpack-dev-server-ի հետ միասին
});
}
Այսպիսով, երբ կոմպոնենտում փոփոխություն է կատարվում, միայն այդ կոմպոնենտը թարմացվում է բրաուզերի հիշողության մեջ, ոչ ամբողջ էջը, ինչը զգալիորեն արագացնում է զարգացման գործընթացը։