使用 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 相关文章推荐
分页栏的web标准实现
Nov 01 Javascript
利用webqq协议使用python登录qq发消息源码参考
Apr 08 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
Sep 26 Javascript
js改变鼠标的形状和样式的方法
Mar 31 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
Jun 14 Javascript
JavaScript的jQuery库中ready方法的学习教程
Aug 14 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
jQuery无刷新分页完整实例代码
Oct 27 Javascript
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
你可能不知道的CORS跨域资源共享
Mar 13 Javascript
微信小程序云开发之数据库操作
May 18 Javascript
JS快速实现简单计算器
Apr 08 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中文分词的简单实现代码分享
2011/07/17 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
JSQL  一个 web DB 的封装
2010/05/05 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
js设置cookie过期当前时间减去一秒相当于立即过期
2014/09/04 Javascript
Node.js 去掉种子(torrent)文件里的邪恶信息
2015/03/27 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python进程通信之匿名管道实例讲解
2015/04/11 Python
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
Python通过format函数格式化显示值
2020/10/17 Python
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
日语系毕业生推荐信
2013/11/11 职场文书
《穷人》教学反思
2014/04/08 职场文书
初中学校军训方案
2014/05/09 职场文书
设计师求职信
2014/07/01 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
django上传文件的三种方式
2021/04/29 Python