vue自动路由-单页面项目(非build时构建)


Posted in Javascript onApril 30, 2019

这是一个什么项目?

答:这是一个单页面的vue.js项目,主要为了实现在非build时,进行自动路由。简单点说,就是在请求页面时,根据url进行动态添加路由。

自动路由有什么限制吗?

答:有,因为是通过url进行动态添加,所以,在指定文件夹下,组件文件的相对路径必须与url有一定的关系。当前demo项目,url路径与modules文件夹下的组件相对路径一致。例如:

url地址:localhost:5000/home/index

组件路径:modules/home/index/index.vue

此方式的自动路由能做些什么?

答:

1.动态权限控制:在匹配不上路由时,请求后台获取是否有权限,根据后台的反馈处理是否添加路由(是否允许访问)。

2.自动跳转首页、404页面等页面

项目demo地址

vue.js单项目自动路由:https://github.com/bobowire/wireboy.samples/tree/master/vue.js/onepage

具体步骤

1.组件生成

在router文件夹下添加import.js文件,代码如下图:

 源码:

module.exports = file => () => import('@/modules/' + file + '.vue')

2.拦截路由

 在src目录下,添加autoroute.js文件,代码如下图:

源码:

import router from './router'
const _import = require('./router/import')// 获取组件的方法
router.beforeEach(async (to, from, next) => {
 // 默认的首页页面
 if (to.fullPath === '/') {
 next('/home/index')
 } else if (to.matched.length === 0) {
 // 获取组件路径
 let componentpath = to.fullPath.substring(1) + '/' + to.fullPath.substring(to.fullPath.lastIndexOf('/') + 1)
 // 添加路由
 router.addRoutes([{
 path: to.fullPath,
 name: to.fullPath.substring(to.fullPath.lastIndexOf('/') + 1),
 component: _import(componentpath)
 }])
 // 路由重匹配
 next({ ...to, replace: true })
 } else {
 next()
 }
})

总结

以上所述是小编给大家介绍的vue自动路由-单页面项目(非build时构建),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
用JTrackBar实现的模拟苹果风格的滚动条
Aug 06 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
Nov 30 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
Aug 22 Javascript
JS中FRAME的操作问题实例分析
Oct 21 Javascript
jQuery中unwrap()方法用法实例
Jan 16 Javascript
JS使用parseInt解析数字实现求和的方法
Aug 05 Javascript
JS+CSS实现滑动切换tab菜单效果
Aug 25 Javascript
很不错的两款Bootstrap Icon图标选择组件
Jan 28 Javascript
jQuery实现的自适应焦点图效果完整实例
Aug 24 Javascript
BootStrap轻松实现微信页面开发代码分享
Oct 21 Javascript
详解vue父子模版嵌套案例
Mar 04 Javascript
一次记住JavaScript的6个正则表达式方法
Feb 22 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 #Javascript
微信小程序页面间传值与页面取值操作实例分析
Apr 30 #Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
Apr 30 #Javascript
微信小程序常用赋值方法小结
Apr 30 #Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 #Javascript
一百行JS代码实现一个校验工具
Apr 30 #Javascript
Vue-cli3简单使用(图文步骤)
Apr 30 #Javascript
You might like
php使用gettimeofday函数返回当前时间并存放在关联数组里
2015/03/19 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
设定php简写功能的方法
2019/11/28 PHP
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
JavaScript实现构造json数组的方法分析
2018/08/17 Javascript
微信小程序 调用微信授权窗口相关问题解决
2019/07/25 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
讲解Python中fileno()方法的使用
2015/05/24 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
使用C#编写创建一个线程的代码
2013/01/22 面试题
高中生学习总结的自我评价范文
2013/10/13 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server