最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue路由模塊化配置的完整步驟

 更新時間:2019年08月14日 09:22:42   作者:Krryblog  
這篇文章主要給大家介紹了關于Vue路由模塊化配置的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Vue具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

企業(yè)運營后臺頁面很多,路由如若不區(qū)分模塊化配置,所有路由擠在同一個文件將不好維護,所以路由的配置也要模塊化

分享兩個解決方案 —— Vue 路由配置的模塊化(Plan A and Plan B)

注冊需要

首先路由注冊需要啥

// main.js

new Vue({
 el: '#app',
 router,
 store,
 components: { App },
 template: '<App/>'
})

// 這里的 router 是這樣的
export default new Router({
 mode: 'history',
 routes: [],
 ... // 其他配置
})

也就是說注冊需要 new 一個 Router 實例,實例里的 routes 是數(shù)組,里面配置每個頁面的路由

模塊拆分(Plan A)

src 下 router 的目錄結構

---src
----router
------modules
--------xxxx.js // 模塊 xxx
--------other.js // 模塊 other
------index.js // 路由配置入口和出口 index

例如

然后配置 modules 里面模塊路由

// 配置 other
import err from '@/views/others/Error.vue'
export default function(router) {
 router.push({
  path: '/error',
  name: 'error',
  component: err
 })
}
// 配置 accoutReport
export default function(router) {
 router.push({
  path: '/accout-report',
  redirect: '/accout-report/list'
 })
 // 列表
 router.push({
  path: '/accout-report/list',
  name: 'list',
  component: () => import('@/views/accoutReport/List.vue')
 })
 // 新增
 router.push({
  path: '/accout-report/create',
  name: 'create',
  component: () => import('@/views/accoutReport/Create.vue')
 })
 // 編輯
 router.push({
  path: '/accout-report/edit/:id',
  name: 'edit',
  component: () => import('@/views/accoutReport/steps/CreateStep2.vue')
 })
 // 詳情
 router.push({
  path: '/accout-report/detail/:id',
  name: 'detail',
  component: () => import('@/views/accoutReport/Detail.vue')
 })
}

如有其他模塊,依次像上面一樣配置

關鍵是路由配置入口出口文件 index.js

// index.js
import Vue from 'vue'
import Router from 'vue-router'
import App from '@/views/Layouts.vue'
import otherRouter from '@/router/modules/others'
import accoutReport from '@/router/modules/accoutReport'
// import store from '@/stores'
Vue.use(Router)

let routes = []

let rootRouter = {
 path: '/',
 component: App,
 children: [],
 redirect: '/accout-report/list'
}

let redirectRouter = {
 path: '*',
 redirect: '/error'
}

otherRouter(rootRouter.children)
accoutReport(rootRouter.children)
// 如有多個模塊,依次在這里配置

const router = new Router({
 mode: 'history',
 routes: routes.concat([rootRouter, redirectRouter])
})
export default router

上述代碼,除了 other,所有頁面路由配置在 rootRouter 的 children 下面,有一個父級 router 包裹著
代碼都看得懂,這里就不多說哈~

最后在 main.js 中注冊

模塊拆分(Plan B)

該方法較為難懂一些,可以看看

目錄結構跟 Plan A 類似,不過在 src 下多了一個 router.js 配置文件作為路由出口文件

src 下 router 的目錄結構

---src
----router
------modules
--------xxxx.js // 模塊 xxx
--------other.js // 模塊 other
------index.js // 路由配置中轉文件
----router.js // 路由配置出口文件

例如

模塊 modules 里文件配置

// order.js
import { getFindBusinessServiceList } from '@/utils/config-utils'

const OrderRouter = [
 {
  path: '/',
  redirect: '/cost/order-list'
 },
 {
  path: '/cost',
  component: () => import('@/views/Layouts'),
  redirect: '/cost/order-list',
  children: [
   {
    path: 'order-list',
    component: () => import('@/views/orderManagement/List'),
    beforeEnter: async (to, from, next) => {
     await getFindBusinessServiceList() // 進入該路由前異步請求,結束后進入該路由
     next()
    }
   },
   {
    path: 'order-detail',
    component: () => import('@/views/orderManagement/Detail')
   },
   // 下面是重定向,可不配置
   {
    path: 'orderDetail',
    redirect: 'order-detail'
   },
   {
    path: 'order',
    redirect: 'order-list'
   }
  ]
 }
]
export default OrderRouter

上述路由配置在 Layouts 路由下的 children

接下來關鍵,路由配置中轉文件 index.js

遍歷 modules 文件夾下的每個模塊文件,賦值和導出

// index.js
import { camelCase } from 'lodash-es'
const requiredModules = require.context('./modules', false, /\.js$/)
const routers = {}

requiredModules.keys().forEach(fileName => {
 // 不加載index.js
 if (fileName === './index.js') return
 // 轉為駝峰命名
 const moduleName = camelCase(fileName.replace(/(\.\/|\.js)/g, ''))

 routers[moduleName] =
  requiredModules(fileName).default || requiredModules(fileName)
})
export default routers

然后在 src 下的出口文件 router.js 包裝

// router.js
import Vue from 'vue'
import Router from 'vue-router'
import routers from '@/routers/index'
Vue.use(Router)
let routes = []
Object.values(routers).forEach(router => {
 routes.push(...router)
})

export default new Router({
 mode: 'history',
 routes
})

最后在 main.js 中注冊

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • vue基于Echarts的拖拽數(shù)據(jù)可視化功能實現(xiàn)

    vue基于Echarts的拖拽數(shù)據(jù)可視化功能實現(xiàn)

    這篇文章主要給大家介紹了關于vue基于Echars的拖拽數(shù)據(jù)可視化功能實現(xiàn)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • vue中優(yōu)雅實現(xiàn)數(shù)字遞增特效的詳細過程

    vue中優(yōu)雅實現(xiàn)數(shù)字遞增特效的詳細過程

    項目中需要做數(shù)字滾動增加的效果,一開始很懵,研究了一下原理,發(fā)現(xiàn)很簡單,下面這篇文章主要給大家介紹了關于vue中優(yōu)雅實現(xiàn)數(shù)字遞增特效的詳細過程,需要的朋友可以參考下
    2022-12-12
  • vue項目實現(xiàn)按鈕可隨意移動

    vue項目實現(xiàn)按鈕可隨意移動

    這篇文章主要為大家詳細介紹了vue項目實現(xiàn)按鈕可隨意移動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Vue2中使用axios的3種方法實例總結

    Vue2中使用axios的3種方法實例總結

    axios從功能上來說就是主要用于我們前端向后端發(fā)送請求,是基于http客戶端的promise,面向瀏覽器和nodejs,下面這篇文章主要給大家介紹了關于Vue2中使用axios的3種方法,需要的朋友可以參考下
    2022-09-09
  • vue 判斷兩個時間插件結束時間必選大于開始時間的代碼

    vue 判斷兩個時間插件結束時間必選大于開始時間的代碼

    這篇文章主要介紹了vue 判斷兩個時間插件結束時間必選大于開始時間的代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue渲染時閃爍{{}}的問題及解決方法

    vue渲染時閃爍{{}}的問題及解決方法

    v-if和v-show可能是日常開發(fā)中最常用的兩個指令,雖然看上去兩者功能是類似的,但是兩者還是存在很大區(qū)別的。接下來通過本文給大家分享vue渲染時閃爍{{}}的問題及解決方法,感興趣的朋友一起看看吧
    2018-03-03
  • 詳解vue2.0監(jiān)聽屬性的使用心得及搭配計算屬性的使用

    詳解vue2.0監(jiān)聽屬性的使用心得及搭配計算屬性的使用

    這篇文章主要介紹了vue2.0之監(jiān)聽屬性的使用心得及搭配計算屬性的使用,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • 基于vue.js實現(xiàn)的分頁

    基于vue.js實現(xiàn)的分頁

    本文主要給大家介紹基于vue的分頁原生寫法,代碼分為html部分和js部分,簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-03-03
  • Vue3.3?+?TS4構建實現(xiàn)ElementPlus功能的組件庫示例

    Vue3.3?+?TS4構建實現(xiàn)ElementPlus功能的組件庫示例

    Vue.js?是目前最盛行的前端框架之一,而?TypeScript?則是一種靜態(tài)類型言語,它能夠讓開發(fā)人員在編寫代碼時愈加平安和高效,本文將引見如何運用?Vue.js?3.3?和?TypeScript?4?構建一個自主打造媲美?ElementPlus?的組件庫
    2023-10-10
  • Vue3+TS實現(xiàn)語音播放組件的示例代碼

    Vue3+TS實現(xiàn)語音播放組件的示例代碼

    這篇文章主要介紹了如何利用Vue+TS實現(xiàn)一個簡易的語音播放組件,文中的示例代碼講解詳細,對我們學習Vue有一定的幫助,需要的可以參考一下
    2022-03-03

最新評論

商水县| 台江县| 安乡县| 萨迦县| 磐石市| 杭锦后旗| 鄂尔多斯市| 辽源市| 灌南县| 霍城县| 滕州市| 二手房| 华容县| 灵台县| 太保市| 杭锦后旗| 云梦县| 六安市| 泸水县| 乐东| 静海县| 太仆寺旗| 抚顺县| 杭州市| 河津市| 凌海市| 富平县| 连江县| 东光县| 城市| 东乌| 渭南市| 石城县| 清水河县| 富蕴县| 象山县| 富源县| 尤溪县| 兴安县| 永泰县| 嘉祥县|