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 相关文章推荐
预加载css或javascript的js代码
Apr 23 Javascript
javascript之AJAX框架使用说明
Apr 24 Javascript
js解析与序列化json数据(三)json的解析探讨
Feb 01 Javascript
js this函数调用无需再次抓获id,name或标签名
Mar 03 Javascript
基于Vuejs框架实现翻页组件
Jun 29 Javascript
bootstrap datetimepicker2.3.11时间插件使用
Nov 19 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
Mar 21 Javascript
用JS实现简单的登录验证功能
Jul 28 Javascript
Vue数据监听方法watch的使用
Mar 28 Javascript
vue的keep-alive中使用EventBus的方法
Apr 23 Javascript
vue+openlayers绘制省市边界线
Dec 24 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
桌面中心(一)创建数据库
2006/10/09 PHP
Laravel下生成验证码的类
2017/11/15 PHP
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
Dojo Javascript 编程规范 规范自己的JavaScript书写
2014/10/26 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
Javascript删除指定元素节点的方法
2016/06/21 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
深入理解nodejs中Express的中间件
2017/05/19 NodeJs
vue项目中用cdn优化的方法
2018/01/03 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
英文简历中的自我评价用语
2013/12/09 职场文书
大学生表扬信范文
2014/01/09 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
贸易经济专业自荐书
2014/06/29 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android
Redis实现分布式锁的五种方法详解
2022/06/14 Redis