一,vue路由守衛(wèi)的生命周期
1,全局的前置路由守衛(wèi) router.beforeEach()
2, 全局解析守衛(wèi) router.beforeResolve
完整的導(dǎo)航解析流程:
導(dǎo)航被觸發(fā)孵坚。
在失活的組件里調(diào)用 beforeRouteLeave 守衛(wèi)。
調(diào)用全局的 beforeEach 守衛(wèi)。
在重用的組件里調(diào)用 beforeRouteUpdate 守衛(wèi) (2.2+)。
在路由配置里調(diào)用 beforeEnter诀紊。
解析異步路由組件。
在被激活的組件里調(diào)用 beforeRouteEnter隅俘。
調(diào)用全局的 beforeResolve 守衛(wèi) (2.5+)邻奠。
導(dǎo)航被確認(rèn)笤喳。
調(diào)用全局的 afterEach 鉤子。
觸發(fā) DOM 更新碌宴。
調(diào)用 beforeRouteEnter 守衛(wèi)中傳給 next 的回調(diào)函數(shù)杀狡,創(chuàng)建好的組件實(shí)例會(huì)作為回調(diào)函數(shù)的參數(shù)傳入。
導(dǎo)航守衛(wèi)
二唧喉,nextTick原理
Vue你不得不知道的異步更新機(jī)制和nextTick原理
三捣卤,js原型鏈忍抽?實(shí)現(xiàn)一個(gè)繼承
只要是對(duì)象就是有構(gòu)造函數(shù)來(lái)創(chuàng)建的八孝,并且內(nèi)部二個(gè)屬性是從構(gòu)造函數(shù)的prototype衍生的一個(gè)指向,而構(gòu)造函數(shù)的prototype也是一個(gè)對(duì)象鸠项,那么它應(yīng)該肯定也有一個(gè)構(gòu)造函數(shù)干跛,首先它是一個(gè)Object {} 對(duì)象,那么它的構(gòu)造函數(shù)肯定是Object,所以就會(huì)有一個(gè)指針proto指向Object.prototype祟绊。最后Object.prototype因?yàn)闆](méi)有proto楼入,指向null,這樣就構(gòu)成了一個(gè)原型鏈牧抽。
原型繼承的實(shí)現(xiàn)
四嘉熊,如何將一個(gè)普通css轉(zhuǎn)成scss,less
五,webpack原理
1扬舒、核心概念
(1)entry:一個(gè)可執(zhí)行模塊或者庫(kù)的入口阐肤。
(2)chunk:多個(gè)文件組成一個(gè)代碼塊〗部玻可以將可執(zhí)行的模塊和他所依賴(lài)的模塊組合成一個(gè)chunk孕惜,這是打包。
(3)loader:文件轉(zhuǎn)換器晨炕。例如把es6轉(zhuǎn)為es5衫画,scss轉(zhuǎn)為css等
(4)plugin:擴(kuò)展webpack功能的插件。在webpack構(gòu)建的生命周期節(jié)點(diǎn)上加入擴(kuò)展hook瓮栗,添加功能削罩。
2、webpack構(gòu)建流程(原理)
從啟動(dòng)構(gòu)建到輸出結(jié)果一系列過(guò)程:
(1)初始化參數(shù):解析webpack配置參數(shù)费奸,合并shell傳入和webpack.config.js文件配置的參數(shù)弥激,形成最后的配置結(jié)果。
(2)開(kāi)始編譯:上一步得到的參數(shù)初始化compiler對(duì)象货邓,注冊(cè)所有配置的插件秆撮,插件監(jiān)聽(tīng)webpack構(gòu)建生命周期的事件節(jié)點(diǎn),做出相應(yīng)的反應(yīng)换况,執(zhí)行對(duì)象的 run 方法開(kāi)始執(zhí)行編譯职辨。
(3)確定入口:從配置的entry入口盗蟆,開(kāi)始解析文件構(gòu)建AST語(yǔ)法樹(shù),找出依賴(lài)舒裤,遞歸下去喳资。
(4)編譯模塊:遞歸中根據(jù)文件類(lèi)型和loader配置,調(diào)用所有配置的loader對(duì)文件進(jìn)行轉(zhuǎn)換腾供,再找出該模塊依賴(lài)的模塊仆邓,再遞歸本步驟直到所有入口依賴(lài)的文件都經(jīng)過(guò)了本步驟的處理。
(5)完成模塊編譯并輸出:遞歸完事后伴鳖,得到每個(gè)文件結(jié)果节值,包含每個(gè)模塊以及他們之間的依賴(lài)關(guān)系,根據(jù)entry配置生成代碼塊chunk榜聂。
(6)輸出完成:輸出所有的chunk到文件系統(tǒng)搞疗。
注意:在構(gòu)建生命周期中有一系列插件在做合適的時(shí)機(jī)做合適事情,比如UglifyPlugin會(huì)在loader轉(zhuǎn)換遞歸完對(duì)結(jié)果使用UglifyJs壓縮覆蓋之前的結(jié)果须肆。
webpack系列--淺析webpack的原理