使用 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 相关文章推荐
js+CSS 图片等比缩小并垂直居中实现代码
Dec 01 Javascript
基于jquery的表格排序
Sep 11 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
Aug 09 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
Aug 27 Javascript
jQuery取得iframe中元素的常用方法详解
Jan 14 Javascript
js+canvas实现动态吃豆人效果
Mar 22 Javascript
基于JavaScript表单脚本(详解)
Oct 18 Javascript
基于vue.js实现的分页
Mar 13 Javascript
微信小程序实现日历效果
Dec 28 Javascript
JavaScript实现简易聊天对话框(加滚动条)
Feb 10 Javascript
vue移动端的左右滑动事件详解
Jun 17 Javascript
Vue实现跑马灯样式文字横向滚动
Nov 23 Vue.js
微信小程序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漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
mysql查找删除重复数据并只保留一条实例详解
2016/09/24 PHP
php微信开发之谷歌测距
2018/06/14 PHP
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
js prototype截取字符串函数
2010/04/01 Javascript
Javascript 面向对象之重载
2010/05/04 Javascript
怎么清空javascript数组
2013/05/11 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
nodejs基础知识
2017/02/03 NodeJs
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
微信小程序 POST请求的实例详解
2017/09/29 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
浅谈KOA2 Restful方式路由初探
2019/03/14 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
详解Python循环作用域与闭包
2019/03/21 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
Python netmiko模块的使用
2020/02/14 Python
python识别验证码图片实例详解
2020/02/17 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
安全标兵事迹材料
2014/08/17 职场文书
大一学生个人总结
2015/02/15 职场文书
审美与表现自我评价
2015/03/09 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书
JS继承最简单的理解方式
2021/03/31 Javascript