使用 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增加鼠标中间功能mousewheel的实例代码
Sep 05 Javascript
Javascript基础教程之关键字和保留字汇总
Jan 18 Javascript
JavaScript中常见获取元素的方法汇总
Mar 04 Javascript
表单验证插件Validation应用的实例讲解
Oct 10 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
Jan 23 Javascript
js中的关联数组与普通数组详解
Jul 27 Javascript
AngularJS删除路由中的#符号的方法
Sep 20 Javascript
jquery 判断div show的状态实例
Dec 03 Javascript
vue.js项目中实用的小技巧汇总
Nov 29 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
May 28 Javascript
javascript实现简单搜索功能
Mar 26 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生成树的方法
2015/07/28 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
PHP常见错误提示含义解释(实用!值得收藏)
2016/04/25 PHP
js内置对象 学习笔记
2011/08/01 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
使用vue实现一个电子签名组件的示例代码
2020/01/06 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
[36:33]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第二场 11.29
2020/12/02 DOTA
Python中常用信号signal类型实例
2018/01/25 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
python使用pymongo操作mongo的完整步骤
2019/04/13 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
python开发一款翻译工具
2020/10/10 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
浪漫婚礼主题活动策划方案
2014/09/15 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
革命电影观后感
2015/06/18 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis