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 相关文章推荐
javascript读取RSS数据
Jan 20 Javascript
JavaScript中“+=”的应用
Feb 02 Javascript
javascript 处理事件绑定的一些兼容写法
Dec 24 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
JQuery中基础过滤选择器用法实例分析
May 18 Javascript
jQuery解析XML文件同时动态增加js文件的方法
Jun 01 Javascript
javascript的几种继承方法介绍
Mar 22 Javascript
原生JS实现图片网格式渐显、渐隐效果
Jun 05 Javascript
vue中七牛插件使用的实例代码
Jul 28 Javascript
js删除数组中某几项的方法总结
Jan 16 Javascript
使用Layui搭建后台管理界面的操作方法
Sep 20 Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 Javascript
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中防止SQL注入实现代码
2011/02/19 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
javascript检查表单数据是否改变的方法
2013/07/30 Javascript
JS、CSS加载中的小问题探讨
2013/11/26 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
PyTorch预训练Bert模型的示例
2020/11/17 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
LODI女鞋在线商店:阿利坎特的鞋类品牌
2019/02/15 全球购物
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
行政经理的岗位职责
2013/11/23 职场文书
技术总监个人的自我评价范文
2013/12/18 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
党员教师一句话承诺
2014/05/30 职场文书
雷人标语集锦
2014/06/19 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
写给领导的感谢信
2015/01/22 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
实验室安全管理制度
2015/08/05 职场文书
个人业务学习心得体会
2016/01/25 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
python​格式化字符串
2022/04/20 Python