【Vue】路由
快速入门
1. 安装路由
npm install --save vue-router
2. 定义组件
<template>
<div>
<h3>Home</h3>
<router-link to="/login">Login</router-link>
</div>
</template>
<script>
export default {};
</script>
3. 定义路由规则
import Vue from 'vue'
import VueRouter from 'vue-router' Vue.use(VueRouter) export default new VueRouter({
mode: 'history',
routes: [
{ path: '/', component: () => import('../views/home.vue') },
{ path: '/login', component: () => import('../views/login.vue') },
]
});
4. 在需要显示路由位置放<router-view />
<router-view />
这就完成一个简单路由
深入路由
基础
VueRouter.model :
- hash(默认):使用 URL 的 hash 来模拟一个完整的 URL
- history :利用 history.pushState API 来完成 URL 跳转而无须重新加载页面
<router-link> : 路由功能导航,默认生成<a>标签,可以使用tag属性修改生成的标签
<router-view /> : 路由出口,匹配到的路由会在这里渲染
动态路由
通常链接需要带上参数,根据参数显示不同结果
Vue动态路由用":" 匹配路径参数,然后就匹配的参数放入$route.params
1. 定义动态路由,这里需要对路由命名,获取名称和性别
{ path: '/login/:username/:sex', name: 'login', component: () => import('../views/login.vue') },
2. 路由链接 - 需要路由命名
<router-link :to="{ name: 'login', params: { username, sex } }">Login</router-link>
<!--等价于-->
<router-link to="/login/WilsonPan/1">Login</router-link>
3. 组件获取路由参数
<h3>username : {{ this.$route.params.username }}</h3>
<h3>sex : {{ this.$route.params.sex === 1 ? "男" : "女" }}</h3>
注:除了可以设置路由参数,还可以设置query参数
<router-link :to="{ name: 'login', query: { id: 3 }, params: { username, sex } }">Login</router-link>
<!--等价于-->
<router-link to="/login/WilsonPan/1?id=3">Login</router-link>
组件获取query参数
<h3>id : {{ this.$route.query.id }}</h3>
嵌套路由
一个路由渲染的页面包含另外的路由
1. 定义路由
{
path: '/',
name: 'home',
component: () => import('../views/home.vue'),
children: [
{ path: '/', component: () => import('../components/ComponentDemo.vue') },
{ path: '/directives', component: () => import('../components/Directives.vue') }
]
}
2. 在需要显示子路由的地方放子路由渲染页面
<router-view />
导航守卫
导航守卫主要用来通过跳转或取消的方式守卫导航,导航守卫有全局的,单个路由的,组件级别,用于未登录控制访问,控制访问等。
全局路由
const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
// ...
})
- to: Route: 即将要进入的目标路由对象
- from: Route: 当前导航正要离开的路由
- next: Function: 一定要调用该方法来 **resolve** 这个钩子。执行效果依赖 next 方法的调用参数。
路由独享的守卫
const router = new VueRouter({
routes: [
{
path: '/foo',
component: Foo,
beforeEnter: (to, from, next) => {
// ...
}
}
]
})
组件内的守卫
const Foo = {
template: `...`,
beforeRouteEnter (to, from, next) {
// 在渲染该组件的对应路由被 confirm 前调用
// 不!能!获取组件实例 `this`
// 因为当守卫执行前,组件实例还没被创建
},
beforeRouteUpdate (to, from, next) {
// 在当前路由改变,但是该组件被复用时调用
// 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
// 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
// 可以访问组件实例 `this`
},
beforeRouteLeave (to, from, next) {
// 导航离开该组件的对应路由时调用
// 可以访问组件实例 `this`
}
}
转发请标明出处:https://www.cnblogs.com/WilsonPan/p/12770411.html
【Vue】路由的更多相关文章
- Vue路由vue-router
前面的话 在Web开发中,路由是指根据URL分配到对应的处理程序.对于大多数单页面应用,都推荐使用官方支持的vue-router.Vue-router通过管理URL,实现URL和组件的对应,以及通过U ...
- 攻克vue路由
先下手 路由是个好功能,但是每次都感觉没法开始下手,愣愣的看半天官方文档,所以做个快速开始教程. 首先先搭好HTML文件结构: <!--link和view在一个父元素下--> <di ...
- Vue路由学习心得
GoodBoy and GoodGirl~进来了就看完点个赞再离开,写了这么多也不容易的~ 一.介绍 1.概念:路由其实就是指向的意思,当我们点击home按钮时,页面中就要显示home的内容,点击l ...
- VUE路由新页面打开的方法总结
平常做单页面的场景比较多,所以大部分的业务是在同一个页面进行跳转.要通过VUE路由使用新页面打开且传递参数,可以采用以下两个方法: 1.router-link的target <router-li ...
- vue路由参数变化刷新数据
当路由到某个组件时,由于组件会复用,所以生命周期函数不会再次执行, 如果这个组件是模板组件,靠传入不同数据来显示的.那么,可能会发生参数变化了但页面数据却不变化. 问题 假如有个组件 info.vue ...
- 10.3 Vue 路由系统
Vue 路由系统 简单示例 main.js import Vue from 'vue' import App from './App.vue' //https://router.vuejs.or ...
- vue路由原理剖析
单页面应用(SPA)的核心之一是: 更新视图而不重新请求页面, 实现这一点主要是两种方式: 1.Hash: 通过改变hash值 2.History: 利用history对象新特性(详情可出门左拐见: ...
- 3种vue路由传参的基本模式
路由是连接各个页面的桥梁,而参数在其中扮演者异常重要的角色,在一定意义上,决定着两座桥梁是否能够连接成功. 在vue路由中,支持3中传参方式. 场景,点击父组件的li元素跳转到子组件中,并携带参数,便 ...
- 14.vue路由&脚手架
一.vue路由:https://router.vuejs.org/zh/ 1.定义 let router = new VueRouter({ mode:"history/hash" ...
- react router @4 和 vue路由 详解(八)vue路由守卫
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 13.vue路由守卫 a.beforeEach 全局守卫 (每个路由调用前都会触发,根据 ...
随机推荐
- java 中 sleep & wait 的区别
简介 简单来说 一个和线程同步有关, 一个单纯的线程延迟等待. 1.sleep是线程中的方法,但是wait是Object中的方法. 2.sleep方法不会释放lock,但是wait会释放,而且会加入到 ...
- C++ 11 move
简介 简单来说, move 可以对于赋值操作带来更好的效率, 因为减少了临时变量的构建. 另外对于完美转发, 右值与左值的使用, 晕晕晕. 参考链接 https://blog.csdn.net/boo ...
- RestCloud ETL社区 八月精选问答
- Behavioral Approach of Management Science: OB(Organizational Behavior)
Managers GTD(get things done) by WWP(working with people). This explains why some writers have chose ...
- 随机现象之Quanlitative+Quantitative研究: 样本空间的“分割”•随机事件(结果集)的“分布”•样本空间事件域(可测度性, 集合运算封闭性)
数量化: Quantitative: Qulifying the uncertainty of phenomenon: 抽取 现象的集合模型(判定是否随机性.是否可大量重复试验,样本空间及其样本点); ...
- SciTech-BigDataAIML-CV+CG-Digital Image Processing- 用 moviepy 库转换 video文件为GIF图片动画
使用 moviepy 库转换video为GIF图片动画文件 pip install moviepy from moviepy.editor import videoFiLeclip videocLip ...
- FreeSwitch: esl 调用lua动态传参&日志查看
lua脚本在执行过程中,可动态接收参数,这样可以让系统更灵活,以上节的自动外呼为例,callout.lua改成下面这样: -- 主叫 local callernum = argv[1]; -- 被叫 ...
- 使用django-simple-history实现简单审计功能
前言 本文依然是中台项目延伸的笔记 这个系列的文章太小众了,看的人都不多 我争取尽快把这系列完结了,然后进入新的项目 关于审计 之前我在 dotnet 的项目里已经自己实现了审计功能了,还是用切面思想 ...
- shader graph实现冰冻效果
上图 先分析物体结冰的原理 1.色值会比之前更加亮一些 2.色调偏蓝白 3.有结晶感 首先实现第一步 我们首先对图片的RGB进行一个乘法运算,让贴图颜色变得更亮,注意,Alpha值是不处理的,所以用C ...
- 根据Word模板导出word文档,包含文本标签替换为图片,生成列表数据,以及标签替换等功能
一.前言 最近项目开发中,有一个根据word模板和指定的数据导出word文件的需求,word模板文件如下,需要将指定标签替换为数据中指定的字段,表格根据第一行的标签生成列表数据,将指定的标签替换为图片 ...