传递参数
两种方式:params和query
params的类型
* 配置路由格式: `/router/:id`
* 传递的方式:在path后面加上对应的值
* 传递后形成的路径:` /router/123`, `/router/abc`
1.首先编写User.vue组件
2. App.vue 有一个router-link
:to="'/user/'+userId"
,界面链接显示
3. router->index.js 配置/user/:id
路由映射方式,这样就根据userid映射成功了
4. 额外功能,User.vue显示路径id this.$route.params.userId
,节课显示
query的类型
* 配置路由格式: `/router`,也就是普通方式
* 传递的方式:对象中使用query的key作为传递方式
* 传递后形成的路径: `/router?id=123`, `/router?id=abc`
1.新建profile.vue组件
2.路由配置: url->Component(关键)
3. 显示的界面,触发路由的配置
URL:协议://主机:端口/路径?查询
scheme://host:port/path?query
profile.vue取出来
<template><div><h2>我是profile组件</h2><h2>name: {{name}}</h2><h2>age: {{age}}</h2><h2>height: {{height}}</h2></div>
</template><script>export default {name: "Profile",data: function () {return{name: this.$route.query.nameage: this.$route.query.age,height: this.$route.query.height}}}
</script><style scoped></style>
也可以用函数来写
v-bind:to&#61;“对象”
this.$router.push(对象)
route与route与route与router
$router &#61; $route &#43; $route…
$router 和 绑定html的id 和 APP组件渲染界面是统一层级的
Vue.use(VueRouter)
会执行VueRouter.install
install执行了什么&#xff1f;
VueRouter.install &#61; install
install.js
注册了全局组件
Vue.component(&#39;RouterView&#39;,View)
Vue.component(&#39;RouterLink&#39;,Link)
Vue.prototype.$router &#61; this._routerRoot._router
所有的组件都继承自Vue类的原型!!!
略…
为什么要使用导航守卫&#xff1f;
- 在一个SPA应用中&#xff0c;如何改变网页的标题呢&#xff1f;
- SPA只有一个固定的HTML&#xff0c;切换不同的组件时&#xff0c;标签并不会改变
- 我们可以通过Javascript修改
title
的内容window.document.title&#61;‘新标题&#39;
声明周期函数:
created()
创建vue实例时调用
mounted()
挂载数据时调用
updated()
界面刷新时调用&#xff0c;
<script>export default {name: "About",created() {document.title &#61; &#39;关于title&#39;}}
</script>
每个Vue都需要添加created() 函数
这样做太繁琐
beforeEach: 前置钩子(守卫)
afterEach: 后置钩子