require.context()实现全局组件注册/路由工程(动态)化

注册全局组件

1. main.js中

// 注册全局组件
import allComponent from './路径' //引入js文件路径
Vue.use(allComponent )

2. js文件中
语法: require.context( directory, (useSubdirectories = true), (regExp = /^\.\/.*$/), (mode = 'sync'));

  • directory:要搜索的文件夹目录
  • useSubdirectories:是否还应该搜索它的子目录
  • regExp:一个匹配文件的正则表达式
  • mode:是否异步加载
/* 注册全局组件 */
export default {
   install(Vue) {
      /*
       注册全局组件
       Vue.component('name',{
         data(){ return{} },
         methods:{}
       })
       在这里可以allComponent(item).default来实现第二个参数函数
       */
      // 创建出一个context,来自`./`父目录 不需要搜索子目录,以`.vue`结尾
      let allComponent = require.context('./', false, /\.vue$/)
      console.log(allComponent.keys)
      allComponent.keys().forEach(item => {
         console.log(allComponent(item).default)
         Vue.component(item.replace(/\.\//, '').replace(/\.vue$/, ''), allComponent(item).default)
      })
   }
}

vue实现 路由工程(动态)化

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

// 路由工程(动态)化
let routerList = [];
(r => r.keys().forEach(item => routerList.push(...r(item).default)))(require.context('./', true, /\.sign\.js/)); //.sign\.js结尾

export default new VueRouter({
  mode: 'history',
  routes: [
     {
        path: '/',
        name: 'defaultRouter',
        redirect: { name: 'login' },
     }, {
        path: '/login',
        name: 'login',
        meta: { token: false },
        component: () => import('@/views/login/login'),
     },  {
        path: '/home',
        name: 'home',
        meta: { token: false },
        component: () => import('@/views/home'),
        children: [
           ...routerList
        ]
     }
  ]
})

待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值