使用 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 png图片(有含有透明)在IE6中为什么不透明了
Feb 07 Javascript
如何用js控制frame的隐藏或显示的解决办法
Mar 20 Javascript
js获取元素外链样式的方法
Jan 27 Javascript
js实现的tab标签切换效果代码分享
Aug 25 Javascript
学习使用jquery iScroll.js移动端滚动条插件
Mar 24 Javascript
jQuery绑定事件on()与弹窗的简要概述
Apr 27 Javascript
jquery中绑定事件的异同
Feb 28 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 Javascript
Node.js实现连接mysql数据库功能示例
Sep 15 Javascript
javascript 作用于作用域链的详解
Sep 27 Javascript
bootstrap时间插件daterangepicker使用详解
Oct 19 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
May 20 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
用cookies来跟踪识别用户
2006/10/09 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
JavaScript实现的in_array函数
2014/08/27 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
js 弹出虚拟键盘修改密码的简单实例
2016/10/10 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
python使用PIL给图片添加文字生成海报示例
2018/08/17 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
python实现复制大量文件功能
2019/08/31 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
Python: glob匹配文件的操作
2020/12/11 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
主持人婚宴答谢词
2014/01/28 职场文书
建议书标准格式
2014/03/12 职场文书
实名检举信范文
2015/03/02 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
学会Python数据可视化必须尝试这7个库
2021/06/16 Python