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) {}// 导航离开

完整的导航解析流程

  1. 导航被触发。
  2. 在失活的组件里调用离开守卫。
  3. 调用全局的 beforeEach 守卫。
  4. 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)。
  5. 在路由配置里调用 beforeEnter
  6. 解析异步路由组件。
  7. 在被激活的组件里调用 beforeRouteEnter
  8. 调用全局的 beforeResolve 守卫 (2.5+)。
  9. 导航被确认。
  10. 调用全局的 afterEach 钩子。
  11. 触发 DOM 更新。
  12. 用创建好的实例调用 beforeRouteEnter 守卫中传给 next 的回调函数。

  导航A切换到导航B,先调用A组件内beforeRouteLeave,再调用全局beforeEach, 然后AB如果是重用组件则调用beforeRouterUpdate,否则调用路由配置中的beforeEnter,再调用B组件中的beforeRouteEnter,再调用全局的beforeResolve,最后调用全局afterEach

待续...

 

转载于:https://www.cnblogs.com/guilishabai/p/9397054.html

vueRouter使用心得相关推荐

  1. Vue.js-Day09【项目实战(附带 完整项目源码)-day04:用户个人中心页面、用户登录页面、将项目打包部署到服务器上、项目汇报、实训心得】

    Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 实战项目源码[链接:https://pan.baidu.com/s/1r0Mje3Xnh8x4F1HyG4aQTA   提 ...

  2. VueRouter时配置动态路由和权限管理

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.pandas是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 分享最近在学习VueRouter时配置动 ...

  3. 个人做vue项目的心得和体会

    ###vue.js 首先,vue.js是一个数据驱动视图的一个js框架,操作数据,然后实时反应到dom元素上的一个动态视图框架,它也是一个渐进式开发框架,比如,我用vue-cli搭建了一个本地开发环境 ...

  4. 数据库期末项目开发心得(持续更新中)

    数据库期末项目开发心得 文章目录 数据库期末项目开发心得 1.架构的实践案例 **(1)[(23条消息) Vue + Spring Boot 项目实战(一):项目简介_Evan 的博客-CSDN博客_ ...

  5. Java EE学习心得

    –Java EE学习心得   1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...

  6. 前端Vue学习之路(二)-Vue-router路由

    Vue学习之路 (二) Vue-router(基础版) 一.增加静态路由 二.动态路由+路由嵌套+404页面 三. 编程式导航 四.命名路由 五.命名视图 六.重定向和起别名 1.重定向 2.起别名 ...

  7. 测试心得:微图书销售小程序

    测试心得:微图书销售小程序 前言 这个学期差不多也将近结束,经过大半个学期,从项目需求的确认和项目文档的编写,到一步步的设计与实现,现在终于到了测试阶段,但是我们在测试阶段也暴露出了很多bug,但是每 ...

  8. 路由vue-router进阶

    目录 1. 导航守卫 1.1. 全局守卫 1.2. 全局解析守卫 1.3. 全局后置钩子 1.4. 路由独享的守卫 1.5. 组件内的守卫 1.6. 完整的导航解析流程 2. 路由元信息 3. 获取数 ...

  9. java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得

    该文章出自:http://www.cnblogs.com/hucn/p/3572384.html 分析工具:http://www.blogjava.net/jjshcc/archive/2014/03 ...

最新文章

  1. python多重继承
  2. 使用OpenVAS 9进行漏洞扫描
  3. grads 相关系数_基于小波变换的多聚焦图像融合算法
  4. 计算机网络总结:第四章 网络层
  5. opengl加载显示3D模型MDL类型文件
  6. okhttp连接池_OkHttp配置HTTPS访问+服务器部署
  7. Java程序员大神给初学者的学习方法路线建议
  8. 计算机二级公共,计算机二级公共基础知识
  9. 计算机绘图模型的参数方程,关于曲线绘图与运动控制问题的研究.doc
  10. webstorm 配置sass 编译
  11. Redfish协议测试工具–Postman
  12. idea导入项目,配置,启动访问项目
  13. 七.其他技术-Beetl与BeetlSQL
  14. 常见Http响应头部 responses header
  15. 解决Vmware虚拟机startx进入图形界面卡退、白屏、黑屏的问题
  16. mysql 8.XXX zip版的安装使用
  17. 使用Vitamio插件显示花屏
  18. 区块链技术应用场景之政务链
  19. Word处理控件Aspose.Words功能演示:使用 C# 将 Word 文档转换为 Markdown
  20. NC:宏基因组联合宏蛋白组分析揭示土壤微生物降解多酚

热门文章

  1. go kegg_玩转GO和KEGG富集因子图的N种姿势: 3种数据处理(含在线筛选条目),3种排序方式,本地交互图片...
  2. 家乡饮食文化PHP开题报告,挖掘家乡饮食文化拓展幼儿园课程
  3. Courier:Dropbox 基于gRPC 的 RPC 框架开发过程
  4. 由浅入深学习Apache httpd原理与配置
  5. 用 iBiu 3 秒构建出大型 Vue 项目架子
  6. Fastjson反序列化泛型类型时候的一个问题
  7. 为你的 Swift Packages 命名
  8. css3 transition的各种ease效果
  9. JEE_Ajax技术
  10. C# 视频监控系列(15):总结贴——可能用到的C# WinForm技术小结