Vue路由的模块自动化与统一加载实现


Posted in Javascript onJune 05, 2020

首先呢,我们来看看一般项目路由是怎么划分的。

Vue路由的模块自动化与统一加载实现

为什么这么划分呢?如果大项目业务非常多,单纯的单页面很难维护,我们只有这样规范化,才能高效率。

模块自动化与统一加载的好处:

  • 规范化命名(模块名.业务名.vue)
  • 不用每次写页面都要去总路由引入组件

接下来,我们实战一波。

一、建立项目文件目录以及文件夹

根据上面的要求建立,依次在src文件夹下的components文件夹下建立一个如名叫model1文件夹用于存放功能模块(可以分别创建多个模块文件夹,里面分别存放业务代码)。在该文件夹下创建components文件夹,用于存放组件。创建pages文件夹,用于存放页面。创建index.route.js,用于存放模块路由代码。

Vue路由的模块自动化与统一加载实现

二、编写模块路由

index.route.js文件下编写,

let router = require.context("./pages",true,/.vue/); // require.context()是webpack提供的方法,这个方法的第一个参数是require的一个文件夹,第二个参数是否遍历子目录,第三个参数是筛选什么类型的文件。
let arr = [];
// router是一个方法,直接调用会出错,router.keys()是router里的一个静态方法。
console.log(router.keys()); // ["./model1.index.vue", "./model1.second.vue"]
router.keys().forEach((key) => {
  let _keyarr=key.split("."); // 分割字符串。如"./model1.index.vue"
  if(key.indexOf("index")!=-1){ // 判断每一项字符串是否有index,有即首页
    arr.push({
      path:_keyarr[1],
      component:router(key).default, // 相当于import
      meta:{
        title:_keyarr[1].replace('/','') // 删除"/"
      }
    }) 
  }
  else{
    arr.push({
      path:_keyarr[1]+"/"+_keyarr[2],
      component:router(key).default,
      meta:{
        title:_keyarr[2]
      }
    })
  }
});
export default arr

三、编写总路由

找到router文件夹下的index.js文件

Vue路由的模块自动化与统一加载实现

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

let router = require.context("../components",true,/\.route\.js/);
let arr=[];
router.keys().forEach((key) => {
 arr=arr.concat(router(key).default); // 拼接数组
});

export default new Router({
 routes: [
  ...arr // 展开数组
 ]
})

这样就完毕了,源代码地址

到此这篇关于Vue路由的模块自动化与统一加载实现的文章就介绍到这了,更多相关Vue路由模块自动化与统一加载内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JS request函数 用来获取url参数
May 17 Javascript
js操作iframe兼容各种主流浏览器示例代码
Jul 22 Javascript
Javascript全局变量var与不var的区别深入解析
Dec 09 Javascript
JavaScript提升性能的常用技巧总结【经典】
Jun 20 Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 Javascript
jquery插件锦集【推荐】
Dec 16 Javascript
3种vue路由传参的基本模式
Feb 22 Javascript
如何使用puppet替换文件中的string
Dec 06 Javascript
小程序中canvas的drawImage方法参数使用详解
Jul 04 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
jQuery-App输入框实现实时搜索
Nov 19 jQuery
vue element el-transfer增加拖拽功能
Jan 15 Vue.js
Jquery滑动门/tab切换实现方法完整示例
Jun 05 #jQuery
详解JS函数防抖
Jun 05 #Javascript
Vuex的各个模块封装的实现
Jun 05 #Javascript
js实现表单项的全选、反选及删除操作示例
Jun 05 #Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
Jun 05 #Javascript
vscode 插件开发 + vue的操作方法
Jun 05 #Javascript
vue渲染方式render和template的区别
Jun 05 #Javascript
You might like
php日志函数error_log用法实例分析
2019/09/23 PHP
JavaScript 继承的实现
2009/07/09 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
jquery实现对联广告的方法
2015/02/05 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
Python找出最小的K个数实例代码
2018/01/04 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python程序变成软件的实操方法
2019/06/24 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
python pptx复制指定页的ppt教程
2020/02/14 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
Python的信号库Blinker用法详解
2020/12/31 Python
英国标准协会商店:BSI Shop
2019/02/25 全球购物
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
化工专业推荐信范文
2013/11/28 职场文书
超市后勤自我鉴定
2014/01/17 职场文书
就业协议书的作用
2014/04/11 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
大学生实习推荐信
2015/03/27 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python
Java比较两个对象中全部属性值是否相等的方法
2021/08/07 Java/Android
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android