之前的写法

  1. 'use strict'
  2. import Vue from 'vue'
  3. import MessageBroadcast from 'page/MessageBroadcast'
  4. import Survey from 'page/Survey'
  5. import MessageFingure from 'page/MessageFingure'
  6. import InterfaceMonitor from 'page/InterfaceMonitor'
  7. import PowerDivisioin from 'page/PowerDivisioin'
  8. import ApiInfo from 'page/ApiInfo'
  9. import UserInfo from 'page/UserInfo'
  10. import CodeTable from 'page/CodeTable'
  11. import PowerToMe from 'page/PowerToMe'
  12. import MessageConfig from 'page/MessageConfig'
  13.  
  14. Vue.component('MessageBroadcast', MessageBroadcast)
  15. Vue.component('Survey', Survey)
  16. Vue.component('MessageFingure', MessageFingure)
  17. Vue.component('InterfaceMonitor', InterfaceMonitor)
  18. Vue.component('PowerDivisioin', PowerDivisioin)
  19. Vue.component('ApiInfo', ApiInfo)
  20. Vue.component('UserInfo', UserInfo)
  21. Vue.component('CodeTable', CodeTable)
  22. Vue.component('PowerToMe', PowerToMe)
  23. Vue.component('MessageConfig', MessageConfig)

今天刚搞明白 如何通过webpack 去动态加载路由

网上有很多方法,但是挺多都不好用,所以我把自己成功实现的 贴出来。

require.context(directory, useSubdirectories = false, regExp = /^\.\//)

参数说明:

   1. 你要引入文件的目录

2.是否要查找该目录下的子级目录

3.匹配要引入的文件

返回:
       1. context.require 返回一个require 函数:

  function webpackContext(req) {
    return __webpack_require__(webpackContextResolve(req));
  }
    2. 改函数有三个属性:resolve 、keys、id

· resolve: 是一个函数,他返回的是被解析模块的id

· keys: 也是一个函数,他返回的是一个数组,该数组是由所有可能被上下文模块解析的请求对象组成

· id:上下文模块的id

  1. import Vue from 'vue'
  2. function capitalizeFirstLetter(str) {
  3. return str.charAt().toUpperCase() + str.slice()
  4. }
  5. function validateFileName(str) {
  6. return /^\S+\.vue$/.test(str) &&
  7. str.replace(/^\S+\/(\w+)\.vue$/, (rs, $) => capitalizeFirstLetter($))
  8. }
  9. const requireComponent = require.context('./', true, /\.vue$/)
  10. requireComponent.keys().forEach(filePath => {
  11. const componentConfig = requireComponent(filePath)
  12. const fileName = validateFileName(filePath)
  13. const componentName = fileName.toLowerCase() === 'index'
  14. ? capitalizeFirstLetter(componentConfig.default.name)
  15. : fileName
  16. Vue.component(componentName, componentConfig.default || componentConfig)
  17. })

实现效果,

成功的动态加载了 Page文件夹下面所有的名为index.vue的组件

vue 动态添加路由 require.context()的更多相关文章

  1. vue 动态注册路由 require.context

    需求场景: 在日常的功能练习和调试过程中,需要一个demo项目进行功能测试,由于频繁.vue页面的同时,又要再router.js文件里面注册路由,感觉有点无聊和枯燥.基于此出发点,考虑能否自动读取文件 ...

  2. vue动态添加路由,跳转页面时,页面报错路由重复:vue-router.esm.js?8c4f:16 [vue-router] Duplicate named routes definition: { name: "Login", path: "/login" }

    之前用了一个vue-element-admin做了一个小项目,里面用到了动态添加路由,动态展示侧边栏, 当我切换页面时,控制台总是警告提示路由重复,连续跳转几次页面后,控制台就被这些警告占满了, 于是 ...

  3. vue动态添加路由addRoutes之不能将动态路由存入缓存

    在我不知道vue的路由还可以通过addRoutes动态添加时,我只知道vue的路由都是写死在路由表中的,每当跳转时再去加载相应的路由.直到在一个新公司接到需要根据用户的权限显示不同的菜单的需求时才知道 ...

  4. Vue页面权限控制和动态添加路由

    原文转自:点我 页面权限控制 页面权限控制是什么意思呢? 就是一个网站有不同的角色,比如管理员和普通用户,要求不同的角色能访问的页面是不一样的.如果一个页面,有角色越权访问,这时就得做出限制了. Vu ...

  5. vue的动态路由(登录之后拿到动态路由通过addRouters()动态添加路由)

    登录后我们拿到路由动态路由,后端传的数据可能为这个 { path: '/index', meta: { title: '首页', icon: 'icon-shouye', tab_index: , / ...

  6. vue-router 动态添加 路由

    动态添加路由可以用了做权限管理.登录后服务器端返回权限菜单,前端动态添加路由  然后在设置菜单 1.vue-router 有方法router.addRoutes(routes) 动态添加更多的路由规则 ...

  7. vue-element-admin登录逻辑,以及动态添加路由,显示侧边栏

    这段时间在研究element-admin,感觉这个库有许多值得学习的地方,我学习这个库的方法是,先看它的路由,顺着路由,摸清它的逻辑,有点像顺藤摸瓜. 这个库分的模块非常清晰,适合多人合作开发项目,但 ...

  8. 【面试题】Vue2动态添加路由 router.addRoute()

    Vue2动态添加路由 点击打开视频讲解更加详细 场景: 一般结合VueX和localstorage一起使用 router.addRoutes vue-router4后 已废弃:使用 router.ad ...

  9. vuex前端工程化之动态导入文件--require.context( )

    随着项目的复杂,文件结构越来越多,Store中modules中的文件也越来越多,如果一个一个加载是不是很麻烦呢? 先看一个项目中store项目结构: 过去都是通过import分别引入文件: 1 imp ...

随机推荐

  1. poj 2186 强连通+缩点

    题意:有一群牛,求被所有牛都认可的牛的个数 每个连通分量建一个缩点,出度为零的缩点包含的点的个数即为要求值 如果有多个出度为零的,直接输出零,否则输出那唯一一个出度为零的缩点包含的点的个数 #incl ...

  2. 如何用PYTHON的CGIHTTPSERVER模块模拟POST请求?

    这次又要逼真一点点,可以弄POST请求啦. 在WEB根目录下新建cgi-bin目录(据说是规模要求),然后运行命令: python -m CGIHTTPServer CGI-BIN目录下,form.p ...

  3. Java-基本输入输出

    Scanner sc = new Scanner(System.in); System.out.println("Please input the path:"); String ...

  4. POJ 3678

    这道题唯一一个注意的地方是,如出现X\/Y=0这种关系时,X=0,Y=0.已经是可以肯定的关系了,所以可以连边X->-X. 我也错了上面这地方.看来,还不够.以后要细心才好. #include ...

  5. JVM基础(二) 实现自己的ClassLoader

    为何要花时间实现自己的ClassLoader 尽管人生的乐趣非常大一部分来自于将时间花在有意思可是无意义的事情上,可是这件事绝对是有意思并且有意义的,有下面几个情景是值得我们花费时间实现自己的clas ...

  6. 为什么pthread_cond_wait须要传递mutex參数

    这是来自知乎的一个问题,由@吴志强提出,有意思的是,他看了大家的回答后,突然顿悟了,同一时候也发现有人答错了,于是乎.他自己回答了自己的问题. 我看完后.发现他分析的非常精彩,于是就记录在这.以下是他 ...

  7. git笔记之eclipse使用github远程仓库进行版本号管理

    原文地址:http://dtbuluo.com/90.html 这里记录一下eclipse开发工具中git的使用说明. 环境:centOS.eclipse-jee-kepler-SR2-linux-g ...

  8. ftk学习记(label篇)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 还是接着上面的一篇博文. 之前以前答应过大家,让大家看一下最简单的ftk程序是怎么执行的.所以 ...

  9. phpfpm的配置

    1.php中fastcgi和php-fpm是什么东西 最近在研究和学习PHP的性能方面的知识,看到了factcgi以及php-fpm,发现我对他们是少之又少的理解,可以说几乎是一无所知,想想还是蛮可怕 ...

  10. POJ1837 Balance 背包

    题目大意: 有一个天平,天平左右两边各有若干个钩子,总共有C个钩子(每个钩子有相对于中心的距离,左负右正),有G个钩码,求将钩码全部挂到钩子上使天平平衡的方法的总数. 将每个砝码看作一组,组内各个物品 ...