使用 webpack 插件自动生成 vue 路由文件的方法


Posted in Javascript onAugust 20, 2019

一款自动生成 vue 路由文件的 webpack 插件 vue-route-webpack-plugin 在项目中试点成功了,现在在项目中已经不需要再维护路由配置文件了,由插件自动生成,节省了大家维护路由的时间。

从长远来看,使用插件自动生成路由是具有一定好处的。当项目中的路由配置非常多的时候,为了区分业务,你可能需要分成许多个文件来存放这些路由文件,这样就不得不去维护这些路由文件。

比如这样的路由文件结构:

|-src/
  |-router/
    index.js
    childrenRouter.js
    childrenRouters/
      // ...some children router files

其中 childrenRouters 目录中维护了各个业务相关的路由。

每当要添加路由的时候,还得重复的写 import 和路由配置项。

比如:

import userlist from '@/views/user/list.vue';
import shoplist from '@/views/shop/list.vue';
import goodslist from '@/views/goods/list.vue';
//import ...

export default [
 {
  path: 'user/list',
  name: 'userlist',
  component: userlist,
  alias: 'user',
 },
 {
  path: 'shop/list',
  name: 'shoplist',
  component: shoplist,
  alias: 'shoplist',
 },
 // ...
]

当一个项目的路由配置多了以后,要维护这些路由文件也是一件费时费神的事情。

现在使用 vue-route-webpack-plugin 插件来自动生成路由后,就无需再关心和维护这些路由文件了。

使用方式

注:以下摘自仓库 README,如有更新以仓库为准

安装

$ yarn add -D @xiyun/vue-route-webpack-plugin

配置

在 vue.config.js 或在 webpack 配置文件中加入插件配置:

const VueRouteWebpackPlugin = require('@xiyun/vue-route-webpack-plugin');

module.exports = {
 configureWebpack: {
  plugins: [
   new VueRouteWebpackPlugin({
    // 选项,见下文
   })
  ],
 }
};

使用

在需要配置路由的页面级 .vue 文件中加入路由配置:

假设在 user.vue 文件中:

<template>
 <div>user</div>
</template>
<script>
// @route('user/list')
// 或
// 第二个参数是路由别名
// @route('user/list', 'user')
// 或使用多行注释
/**
 * @route('user/list')
 * 或
 * @route('user/list', 'user')
 */
export default {
 name: 'user',
 data() {
  return {}
 }
}
</script>

默认情况下,当你启动开发服务或执行构建的时候,就会在 src/router 目录下生成 children.js 这个路由文件。

假设你的页面文件路径是: src/views/user/list.vue ,那么生成的路由文件的内容看起来就会是这样的:

import userlist from '@/views/user/list.vue';
export default [
 {
  path: 'user/list',
  name: 'userlist',
  component: userlist,
  // 如果配置了别名
  alias: 'user',
 },
]

因为这个文件会由插件自动生成,所以你可以在 .gitignore 文件中把这个路由文件在版本库中忽略掉,避免多人协同开发时因频繁改动发生冲突。

默认目录约定

src/
 |-views/     (项目文件,插件会扫描该目录下所有 .vue 文件的路由配置)
  |-...
 |-router/    (路由目录)
  |-index.js   (主路由文件,需要引入 children.js 作为子路由来使用)
  |-children.js (路由文件,由插件自动生成)

选项参考

插件提供了以下这些选项供自定义配置

new VueRouteWebpackPlugin({
 // 文件扩展名,默认只查询 .vue 类型的文件,根据实际需要可以进行扩展
 extension: ['vue', 'js', 'jsx'],
 // 插件扫描的项目目录,默认会扫描 'src/views' 目录
 directory: 'src/views',
 // 生成的路由文件存放地址,默认存放到 'src/router/children.js'
 routeFilePath: 'src/router/children.js',
})

总结

以上所述是小编给大家介绍的使用 webpack 插件自动生成 vue 路由文件的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
jquery插件如何使用 jQuery操作Cookie插件使用介绍
Dec 15 Javascript
JavaScript严格模式禁用With语句的原因
Oct 20 Javascript
使用jQuery获得内容以及内容的属性
Feb 26 Javascript
JavaScript中的toDateString()方法使用详解
Jun 12 Javascript
jquery采用oop模式class类的使用示例
Jan 22 Javascript
js实现倒计时效果(小于10补零)
Mar 08 Javascript
js+html5生成自动排列对话框实例
Oct 09 Javascript
angular实现页面打印局部功能的思考与方法
Apr 13 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
Jul 04 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
Sep 19 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 Javascript
优化Vue中date format的性能详解
Jan 13 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
Aug 20 #Javascript
JS中的算法与数据结构之队列(Queue)实例详解
Aug 20 #Javascript
JS中的算法与数据结构之栈(Stack)实例详解
Aug 20 #Javascript
小程序如何在不同设备上自适应生成海报的实现方法
Aug 20 #Javascript
使用 Vue 实现一个虚拟列表的方法
Aug 20 #Javascript
基于vue手写tree插件的那点事儿
Aug 20 #Javascript
详解基于原生JS验证表单组件xy-form
Aug 20 #Javascript
You might like
php递归使用示例(php递归函数)
2014/02/14 PHP
php代码架构的八点注意事项
2016/01/25 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
小议javascript 设计模式 推荐
2009/10/28 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
Bootstrap进度条组件知识详解
2016/05/01 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python爬取三国演义的实现方法
2016/09/12 Python
Python中正则表达式详解
2017/05/17 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
Django教程笔记之中间件middleware详解
2018/08/01 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
Python程序暂停的正常处理方法
2019/11/07 Python
浅谈python中统计计数的几种方法和Counter详解
2019/11/07 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
python中turtle库的简单使用教程
2020/11/11 Python
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
音乐教学反思
2014/02/02 职场文书
2015年暑期实践报告范文
2015/07/13 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书