亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Nuxt.js之自動路由原理的實現方法

2019-11-19 12:29:36
字體:
來源:轉載
供稿:網友

Nuxt.js 是一個基于 Vue.js 的通用應用框架。集成了Vue 2、Vue-Router、 Vuex、Vue-Meta,用于開發完整而強大的 Web 應用。

它的特性有服務端渲染、強大的路由功能,支持異步數據、HTML頭部標簽管理等。

今天主要介紹的就是Nuxt的特性之一,強大的路由功能。nuxt.js會根據pages目錄結構自動生成vue-router模塊的路由配置。

nuxt源碼地址: https://github.com/nuxt/nuxt.js

建議打開源碼跟著文章的步驟看,第一次寫,文中有任何錯誤或者表述不清的地方,歡迎批評指正。

首先介紹下nuxt路由的使用

nuxt會根據pages下的文件自動生成路由并引入,支持vue-router的基礎路由,動態路由,嵌套路由等?;A路由很簡單,需要注意的是,在使用動態路由時,需要創建對應的以下劃線作為前綴的 Vue文件或目錄

例如:

pages/--| users/-----| _id.vue--| index.vue

Nuxt.js 生成對應的路由配置表為:

router: { routes: [{   name: 'index',   path: '/',   component: 'pages/index.vue'   },   {   name: 'users-id',   path: '/users/:id?',   component: 'pages/users/_id.vue'   }]  }

生成的動態路由, users-id 的路由路徑帶有 :id? 參數,表示該路由是可選的。如果你想將它設置為必選的路由,需要在 users/_id 目錄內創建一個 index.vue 文件。

其次需要注意的是在使用嵌套路由時,需要在pages下添加一個 同名的Vue 文件,用來存放子視圖組件。

例如:

pages/--| users/-----| _id.vue -----| index.vue --| users.vue

Nuxt.js 生成對應的路由配置表為:

 router: { routes: [{  path: '/users',  component: 'pages/users.vue',   children: [{   path: '',   component: 'pages/users/index.vue',   name: 'users'   },   {   path: ':id',   component: 'pages/users/_id.vue',   name: 'users-id'   }]  }] }

接下來看為什么要這么寫,包括怎么自動生成路由的原理。

第一步

從npm run dev 說起,package.json 中,npm run dev 運行之后的命令是

dev : "PORT=3004backpack dev"

ps: Backpack是Node.js項目的簡約的構建系統,在這里它自定義了一個配置backpack.config.js擴展webpack,backpack dev命令是以開發模式運行webpack。

第二步

再看自定義的backpack.config.js,返回了server文件下的index.js

第三步

再查看index.js,在這里它搭建了服務器端口號,讀取了nuxt.config文件,并且初始化了nuxt類。引入了node module中nuxt的Nuxt, Builder

第四步

現在可以去nuxt的源碼看具體是怎么自動生成路由的了
在builder.js中,對所有文件進行打包,其中有一步就是構建路由

generateRoutesAndFiles, 它引入了glob庫對page下的文件進行遍歷,并進行了字符串的處理,最后將所有的vue文件地址,整個的項目地址和pages作為參數傳給createRoutes 函數

第五步

再看createRoutes函數具體做了什么 (common/utils.js)
在createRoutes函數中對傳過來的所有文件地址進行遍歷,再對每一個文件地址字符串處理,以中劃線進行拼接。以此作為route.name


再用lodash庫對routes進行查找,這里就可以看出為什么使用嵌套路由要在同路徑下再加一個同名的vue文件,它的判斷條件就是在routes中找到 name:route.name的集合

如果有嵌套路由,暫時route.path為空,沒有嵌套路由就直接以'/'拼接route.path,這里就可以看到動態路由的合成原理,如果是動態路由,route.path將會以 : 替換 _ ,末尾加上 ?


將route.name和route.path都放入routes中,進行排序,路徑短的先放入,最后調用cleanChildrenRoutes函數,對嵌套路由進行處理。

至此對routes的path 和name的命名的處理已經結束。

第六步

再回到build.js中, 打包完后會生成模版文件,routes.js

在模版文件route.js中, 實例了項目的路由

并引入了路由組件,在引入時,將組件命名為下劃線加上組件的hash值并去重引入


這樣就是一個完整的自動生成路由的過程。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久999| 国产精品第3页| 91精品久久久久久久久中文字幕| 性色av香蕉一区二区| 欧美精品一区二区三区国产精品| 狠狠躁夜夜躁人人爽超碰91| 日韩欧美亚洲成人| 国产精品丝袜一区二区三区| 911国产网站尤物在线观看| 久久精品视频播放| 高清亚洲成在人网站天堂| 国产精品久久久久7777婷婷| 亚洲精品美女久久久| 久久色免费在线视频| 国产精品a久久久久久| 国产精品69av| 揄拍成人国产精品视频| 不卡在线观看电视剧完整版| 播播国产欧美激情| xxav国产精品美女主播| 欧美高清videos高潮hd| 日韩精品日韩在线观看| 欧美成人午夜激情在线| 最新国产精品拍自在线播放| 日韩美女视频免费看| 日韩视频第一页| 秋霞av国产精品一区| 国产免费一区二区三区香蕉精| 久久精品久久久久| 亚洲欧美精品一区二区| 亚洲精品国产美女| 国产精品99蜜臀久久不卡二区| 日韩在线观看高清| 欧美性20hd另类| 亚洲激情视频在线| 一区二区三区四区在线观看视频| 中文字幕精品久久久久| 亚洲欧美日韩一区在线| 欧美怡红院视频一区二区三区| 精品偷拍一区二区三区在线看| 亚洲欧美国内爽妇网| 成人444kkkk在线观看| 欧美另类第一页| 欧美裸体视频网站| 亚洲一区亚洲二区亚洲三区| 久久久久久久影院| 中文字幕亚洲字幕| 神马久久久久久| 久久艹在线视频| 中文字幕久精品免费视频| 亚洲免费人成在线视频观看| 91po在线观看91精品国产性色| 亚洲国产美女精品久久久久∴| 色偷偷偷综合中文字幕;dd| 欧美最猛性xxxxx亚洲精品| 久久久久久久999| 中文字幕一精品亚洲无线一区| 欧美在线影院在线视频| 日韩综合视频在线观看| 欧美极品少妇xxxxⅹ喷水| 97成人精品区在线播放| 久久精品国产亚洲一区二区| 日韩在线观看成人| 国产美女91呻吟求| 欧美成人在线免费| 亚洲无限乱码一二三四麻| 欧美日韩国产精品专区| 性欧美亚洲xxxx乳在线观看| 国产精品尤物福利片在线观看| 国产午夜精品免费一区二区三区| 欧美电影在线播放| 45www国产精品网站| 亚州欧美日韩中文视频| 久久影视电视剧免费网站| 欧美日韩国产va另类| 日韩久久精品电影| 中国人与牲禽动交精品| 黑人巨大精品欧美一区二区三区| 国产精品一区二区三| 日本欧美在线视频| 国产v综合ⅴ日韩v欧美大片| 国内外成人免费激情在线视频网站| 欧美精品免费播放| 欧美在线观看一区二区三区| www亚洲欧美| 主播福利视频一区| 欧美二区在线播放| 91影院在线免费观看视频| 亚洲国产成人精品电影| 日本91av在线播放| 亚洲国产精彩中文乱码av| 亚洲国产另类 国产精品国产免费| 九九热这里只有精品免费看| 夜夜躁日日躁狠狠久久88av| 日韩有码在线播放| 欧美成人激情在线| 日韩欧美在线免费观看| 欧美丰满少妇xxxxx| 亚洲精品美女在线| 欧美一级大片在线观看| 国产精品久久一区| 91精品久久久久久久久久久久久| 精品国产精品三级精品av网址| 欧美视频在线观看免费| …久久精品99久久香蕉国产| 国产精品自产拍在线观看| 日韩精品视频在线| 国产精品网站入口| 91成人免费观看网站| 国产成人精品av| 日韩中文字幕在线看| 国产69久久精品成人| 97精品国产97久久久久久春色| 蜜臀久久99精品久久久久久宅男| 国产精品爽爽ⅴa在线观看| 日韩欧美中文在线| 欧美视频中文字幕在线| 成人a视频在线观看| 国产精品久久中文| 亚洲人av在线影院| 黄色成人在线播放| 午夜精品一区二区三区在线播放| 日韩av在线一区二区| 午夜精品久久久久久久白皮肤| 久久免费国产精品1| 中文字幕日韩精品有码视频| 欧美午夜激情小视频| 91沈先生在线观看| 91精品成人久久| 国产精品一区二区久久精品| 在线观看91久久久久久| 久久99国产精品自在自在app| 欧美精品videos性欧美| 在线精品国产欧美| 一区二区成人精品| 欧美性在线视频| 欧美激情女人20p| 欧亚精品在线观看| 正在播放欧美视频| 国内精品久久久久久中文字幕| 成人av在线天堂| 欧美一级视频一区二区| 亚洲毛茸茸少妇高潮呻吟| 国产不卡一区二区在线播放| 日韩黄色av网站| 中文字幕欧美日韩| 亚洲精品中文字幕av| 国产精品入口免费视| 久久青草福利网站| 亚洲va欧美va在线观看| 欧美成人精品影院| 97成人超碰免| 精品久久久久久中文字幕大豆网| 91免费国产视频| 国产精品视频男人的天堂| 亚洲免费成人av电影| 亚洲欧洲日产国码av系列天堂| 日韩成人在线免费观看| 性色av一区二区三区免费| 日韩精品在线观看一区二区| 国产91精品视频在线观看| 欧美天天综合色影久久精品| 都市激情亚洲色图| 精品五月天久久|