vueRouter使用心得
Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。
一个简单的例子
<div id="app"><router-link to="/foo">Go to Foo</router-link><router-link to="/bar">Go to Bar</router-link><router-view></router-view></div><script src="https://unpkg.com/vue/dist/vue.js"></script><script src="https://unpkg.com/vue-router/dist/vue-router.js"></script><script>const Foo = {template: `<div>Foo</div>`} const Bar = {template: `<div>Bar</div>`} const routes = [{path: '/foo', component: Foo},{path: '/bar', component: Bar}]const router = new VueRouter({routes})new Vue({router,el: '#app',mounted () {console.log(this.$route)console.log(this.$router)}})</script>
动态路由匹配
路由参数
<router-link to="/foo/999">Go to Foo</router-link> {path: '/foo/:id', component: Foo} this.$route.params.id // ==> 999
路由参数变化监视
watch:{'$route'(to, from) {}
}
beforeRouteUpdate (to, from, next) {}
嵌套路由
const User = {template: `<div>User:<router-link to="/one">Go to one</router-link><router-link to="/two">Go to two</router-link><router-view></router-view></div>`, } const One = {template: `<div>One</div>`} const Two = {template: `<div>Two</div>`} const routes = [{path: '/user',component: User,children: [{path: '/one', component: One},{path: '/two', component: Two},]}, ]
命名路由
{path: '/bar/:id', component: Bar, name: 'newbar'} 声明式 <router-link :to="{ name: 'newBar', params: { id: 123 }}">bar</router-link> 编程式 this.$router.push({ name: 'newBar', params: { id: 123 }})
编程式导航
this.$router.push('/bar') //字符串 this.$router.push({path: '/bar'}) //对象 this.$router.push({path: '/bar/123'}) // 完整路径 /bar/123 this.$router.push({ name: 'newbar', params: { id: 123 }}) // 命名的路由 /bar/123 this.$router.push({ path: 'bar', query: { plan: 'private' }}) // 带查询参数,变成 /bar?plan=privatethis.$router.go(n)// 在 history 记录中向前或者后退n步
命名视图
<router-view></router-view> <router-view name="one"></router-view> const One = {template: `<div>One</div>`} const Default= {template: `<div>Default</div>`} const routes = [{path: '/',components: {default: Default,one: One}}]
重定向: redirect
别名: alias
路由组件传值
const Foo = {template: `<div>Foo {{id}}</div>`,props: ['id']// this.$route.params.id } const routes = [{path: '/foo/:id',component: Foo,props: true} ] // 布尔 props: true/false // 对象 props: {id: XXX} // 函数 props: route => {return {id: route.parame.id } }
HTML5 History模式
const router = new VueRouter({mode: 'history',routes: [...] })
导航守卫
全局守卫
router.beforeEach((to, from, next) => {}) //进入路由前 router.beforeResolve(to, from, next) => {}) //组件守卫和异步路由守卫解析 router.afterEach(to, from) => {}) //进入路由后
路由配置 routes数组对象里面配置
beforeEnter: (to, from, next) => {}) //相同路由触发一次
组件内的守卫
beforeRouteEnter (to, from, next) {}// 进入导航之前 不能获取this beforeRouteUpdate (to, from, next){}// 组件复用,路由改变 beforeRouteLeave (to, from, next) {}// 导航离开
完整的导航解析流程
- 导航被触发。
- 在失活的组件里调用离开守卫。
- 调用全局的
beforeEach
守卫。 - 在重用的组件里调用
beforeRouteUpdate
守卫 (2.2+)。 - 在路由配置里调用
beforeEnter
。 - 解析异步路由组件。
- 在被激活的组件里调用
beforeRouteEnter
。 - 调用全局的
beforeResolve
守卫 (2.5+)。 - 导航被确认。
- 调用全局的
afterEach
钩子。 - 触发 DOM 更新。
- 用创建好的实例调用
beforeRouteEnter
守卫中传给next
的回调函数。
导航A切换到导航B,先调用A组件内beforeRouteLeave,再调用全局beforeEach, 然后AB如果是重用组件则调用beforeRouterUpdate,否则调用路由配置中的beforeEnter,再调用B组件中的beforeRouteEnter,再调用全局的beforeResolve,最后调用全局afterEach
待续...
转载于:https://www.cnblogs.com/guilishabai/p/9397054.html
vueRouter使用心得相关推荐
- Vue.js-Day09【项目实战(附带 完整项目源码)-day04:用户个人中心页面、用户登录页面、将项目打包部署到服务器上、项目汇报、实训心得】
Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 实战项目源码[链接:https://pan.baidu.com/s/1r0Mje3Xnh8x4F1HyG4aQTA 提 ...
- VueRouter时配置动态路由和权限管理
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.pandas是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 分享最近在学习VueRouter时配置动 ...
- 个人做vue项目的心得和体会
###vue.js 首先,vue.js是一个数据驱动视图的一个js框架,操作数据,然后实时反应到dom元素上的一个动态视图框架,它也是一个渐进式开发框架,比如,我用vue-cli搭建了一个本地开发环境 ...
- 数据库期末项目开发心得(持续更新中)
数据库期末项目开发心得 文章目录 数据库期末项目开发心得 1.架构的实践案例 **(1)[(23条消息) Vue + Spring Boot 项目实战(一):项目简介_Evan 的博客-CSDN博客_ ...
- Java EE学习心得
–Java EE学习心得 1. 称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...
- 前端Vue学习之路(二)-Vue-router路由
Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...
- 测试心得:微图书销售小程序
测试心得:微图书销售小程序 前言 这个学期差不多也将近结束,经过大半个学期,从项目需求的确认和项目文档的编写,到一步步的设计与实现,现在终于到了测试阶段,但是我们在测试阶段也暴露出了很多bug,但是每 ...
- 路由vue-router进阶
目录 1. 导航守卫 1.1. 全局守卫 1.2. 全局解析守卫 1.3. 全局后置钩子 1.4. 路由独享的守卫 1.5. 组件内的守卫 1.6. 完整的导航解析流程 2. 路由元信息 3. 获取数 ...
- java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得
该文章出自:http://www.cnblogs.com/hucn/p/3572384.html 分析工具:http://www.blogjava.net/jjshcc/archive/2014/03 ...
最新文章
- python多重继承
- 使用OpenVAS 9进行漏洞扫描
- grads 相关系数_基于小波变换的多聚焦图像融合算法
- 计算机网络总结:第四章 网络层
- opengl加载显示3D模型MDL类型文件
- okhttp连接池_OkHttp配置HTTPS访问+服务器部署
- Java程序员大神给初学者的学习方法路线建议
- 计算机二级公共,计算机二级公共基础知识
- 计算机绘图模型的参数方程,关于曲线绘图与运动控制问题的研究.doc
- webstorm 配置sass 编译
- Redfish协议测试工具–Postman
- idea导入项目,配置,启动访问项目
- 七.其他技术-Beetl与BeetlSQL
- 常见Http响应头部 responses header
- 解决Vmware虚拟机startx进入图形界面卡退、白屏、黑屏的问题
- mysql 8.XXX zip版的安装使用
- 使用Vitamio插件显示花屏
- 区块链技术应用场景之政务链
- Word处理控件Aspose.Words功能演示:使用 C# 将 Word 文档转换为 Markdown
- NC:宏基因组联合宏蛋白组分析揭示土壤微生物降解多酚
热门文章
- go kegg_玩转GO和KEGG富集因子图的N种姿势: 3种数据处理(含在线筛选条目),3种排序方式,本地交互图片...
- 家乡饮食文化PHP开题报告,挖掘家乡饮食文化拓展幼儿园课程
- Courier:Dropbox 基于gRPC 的 RPC 框架开发过程
- 由浅入深学习Apache httpd原理与配置
- 用 iBiu 3 秒构建出大型 Vue 项目架子
- Fastjson反序列化泛型类型时候的一个问题
- 为你的 Swift Packages 命名
- css3 transition的各种ease效果
- JEE_Ajax技术
- C# 视频监控系列(15):总结贴——可能用到的C# WinForm技术小结