vue-router源碼解讀


vue-router是vue全家桶中的一員。當初學習的時候,因爲內容比較簡單,只是匆匆瀏覽了一下文檔就開始對照api幹活了,對history mode的實現也僅僅是知道用到了h5的history的方法。這次其實是爲了看看vue-router是怎麼用roll-up打包的,但下下來之後發現代碼量很少,說白了vue-router也只是一個Mixin而已。索性就通讀一遍源碼吧。

vue-router的版本是3.0.7,git clone後,我刪掉了chromedriver包再npm install。因爲這個包是chrome的驅動,非常龐大,是e2e測試的時候用的,基本用不着,建議刪掉。

目錄結構

vue-router採用roll-up打包,引入了Typescript。源代碼放在src文件下。src的文件目錄爲:

— components 裏面包含了link和view兩個路由組件
— history 定義了History基類和AbstractHistory, HTML5History, HashHistory幾個衍生類。是vue-router的功能實現的主體。
— util 定義了異步、dom處理、滾動處理等工具函數
— create-matcher.js 導出了createMatcher函數,該函數接收routes,router兩個參數,返回具有match方法和addRoutes方法的Matcher對象。
— create-route-map.js 導出了createRouteMap函數。該函數根據routes和舊的pathMap等,生成新的pathList, pathMap, nameMap,並確保通配路由*永遠在最後。
— index.js 打包入口文件,導出VueRouter類。
— install.js 將vue-router作爲Mixin注入,註冊RouterView,RouterLink組件,同時導出Vue供其他模塊使用。

路由組件

history與hash模式的實現

如何拼裝與install vue-router

番外篇:如何用rollup打包插件/包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章