1.0.3 • Published 4 years ago

@linewit/vue-router-generator v1.0.3

Weekly downloads
1
License
MIT
Repository
-
Last release
4 years ago

vue-router-generator

Build Status Coverage Status

功能:将项目文件自动转为相应的路由配置 和Nuxt的路由一样,可实现的功能可以参考这里

vue 路由自动生成插件

将传入的项目目录,自动转为 vue-router 的路由配置,component 使用异步加载

安装:npm i vue-router-auto -s

然后在 src/router/index.js 里面统一处理

import Vue from 'vue'
import Router from 'vue-router'
// 引入依赖
import autoRouter from 'vue-router-auto'

Vue.use(Router)

let routes = autoRouter({
    // 页面级的.vue存放位置,必传
    rc: require.context('@/views', true, /\.vue$/),
    // '/'的重定向,可选,默认为''
    redirect: '/test',
    // 页面级的.vue存放的文件夹,可选,默认为:views
    rootFile: 'views',
})
export default new Router({ routes })

基础路由

假设 views 的目录结构如下:

views/
--| login.vue
--| home.vue
--| user/
-----| index.vue
-----| edit.vue
-----| info.vue

那么,vue-router-auto 自动生成的路由配置如下:

[
    {
        name:'login',
        path:'/login',
        component: () => import('@/views/login.vue')
    },
    {
        name:'home',
        path:'/home',
        component: () => import('@/views/home.vue')
    },
    {
        name:'user',
        path:'/user',
        component: () => import('@/views/user/index.vue')
    },
    {
        name:'user-info',
        path:'/user/info',
        component: () => import('@/views/user/info.vue')
    },
    {
        name:'user-edit',
        path:'/user/edit',
        component: () => import('@/views/user/edit.vue')
    }
]

嵌套路由

创建内嵌子路由,你需要添加一个 Vue 文件,同时添加一个与该文件同名的目录用来存放子视图组件。

假设 views 的目录结构如下:

views/
--| login.vue
--| home.vue
--| home/
-----| index.vue
-----| about.vue
-----| product.vue
--| user/
-----| index.vue
-----| info.vue

那么,vue-router-auto 自动生成的路由配置如下:

[
    {
        name:'login',
        path:'/login',
        component: () => import('@/views/login.vue')
    },
    {
        path:'/home',
        component: () => import('@/views/home.vue'),
        children:[
            {
                name:'home-index',
                path:'',
                component: () => import('@/views/home/index.vue')
            },
            {
                name:'home-about',
                path:'about',
                component: () => import('@/views/home/about.vue')
            },
            {
                name:'home-product',
                path:'product',
                component: () => import('@/views/home/product.vue')
            }
        ]
    },
    {
        name:'user',
        path:'/user',
        component: () => import('@/views/user/index.vue')
    },
    {
        name:'user-info',
        path:'/user/info',
        component: () => import('@/views/user/info.vue')
    }
]

动态嵌套路由

假设 views 的目录结构如下:

views/
--| login.vue
--| home.vue
--| home/
-----| _id.vue
-----| about.vue
--| user/
-----| user-edit.vue

那么,vue-router-auto 自动生成的路由配置如下:

[
    {
        name:'login',
        path:'/login',
        component: () => import('@/views/login.vue')
    },
    {
        name:'home',
        path:'/home',
        component: () => import('@/views/home.vue'),
        children:[
            {
                name:'home-id',
                path:':id',
                component: () => import('@/views/home/_id.vue')
            },
            {
                name:'home-about',
                path:'about',
                component: () => import('@/views/home/about.vue')
            }
        ]
    },
    {
        name:'user-edit',
        path:'/user/edit',
        component: () => import('@/views/user/user-edit.vue')
    }
]
abbrevajvamdefineansi-colorsansi-stylesansi-regexargparseasn1assert-plusassertion-errorasynckitasyncaws-sign2balanced-matchaws4bcrypt-pbkdfbrace-expansionbrowser-stdoutcaselesscamelcasechalkcheck-errorcliuicolor-convertcolor-namecombined-streamconcat-mapdashdashdebugcore-util-isdecamelizedeep-eqldeep-isdefine-propertiesdelayed-streamdiffecc-jsbnemoji-regexes-abstractes-to-primitiveescape-string-regexpescodegenesprimaextendestraverseextsprintfesutilsfast-deep-equalfast-json-stable-stringifyfast-levenshteinfind-upflatforever-agentform-datafs.realpathfunction-bindget-caller-fileget-func-namegetpassglobgrowlhandlebarshar-schemahar-validatorhashehas-flaghttp-signaturehas-symbolsinflightinheritsis-bufferis-date-objectis-callableis-fullwidth-code-pointis-regexis-symbolis-typedarrayisexeisstreamjs-yamljsbnjson-schemajson-schema-traversejson-stringify-safejsprimlcov-parselevnlodashlog-driverlocate-pathlog-symbolsmime-dbmime-typesminimatchminimistmkdirpmsneo-asyncnode-environment-flagsnoptoauth-signobject-inspectobject-keysobject.assignobject.getownpropertydescriptorsoptionatoroncep-limitp-locatep-trypath-existspath-is-absolutepathvalperformance-nowprelude-lspslqsrequestpunycoderequire-directoryresolverequire-main-filenamesafe-buffersafer-buffersemverset-blockingsource-mapsprintf-jsstring-widthsshpkstring.prototype.trimendstring.prototype.trimstartstrip-json-commentsstrip-ansisupports-colortough-cookietunnel-agenttweetnacltype-checktype-detectuglify-jsuri-jsuuidverrorwhichwhich-modulewide-alignword-wrapwordwrapwrap-ansiwrappyy18nyargsyargs-parseryargs-unparser
1.0.2

4 years ago

1.0.3

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago