vue路由知识整理
vue路由知识整理
对于单页应用,官方提供了vue-router进行路由跳转的处理.我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们。
参考文章
动态配置路由
HTML
<p>
<!-- query要用path来引入,params要用name来引入,故不能写为 :to="{path:'/login',params: {isLogin: true}} -->
<!-- 跳转路由时用this.$router: this.$router.push({name:"login",params:{isLogin:true}});this.$router.push({path: '/login', query: {isLogin : true}}); -->
<!-- 接收参数时用this.$route: this.$route.query.isLogin 和 this.$route.params.isLogin; -->
<router-link :to="{name:'login',params: {isLogin: true}}">亲,请登录</router-link>
<router-link :to="{name:'login',params: {isLogin: false}}">免费注册</router-link>
</p>
<!-- 路由出口, 路由匹配到的组件将渲染在这里 -->
<router-view></router-view>
route/index.js
import Vue from 'vue';
import Router from 'vue-router';
import login from 'pages/login/login.vue';
import home from 'pages/home/home.vue';
Vue.use(Router);
const router = new Router({
routes: [
{
path: '/home',
// 命名路由,通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由
// 使用<router-link :to="{ name: 'main', params: { userId: 123 }}">User</router-link> 或者 router.push({ name: 'main', params: { userId: 123 }})
name: 'home',
component: home,
meta: { // 路由元信息
keepAlive: false,
auth: false,
title: '主页'
},
// 如果 props: true 被设置为 true,route.params 将会被设置为组件属性
// 路由组件传参 https://router.vuejs.org/zh-cn/essentials/passing-props.html
props: false,
beforeEnter: (to, from, next) => { // 路由独享守卫 https://router.vuejs.org/zh-cn/advanced/navigation-guards.html
console.log('beforeEnter');
next();
}
},
{
path: '/login',
name: 'login',
component: login,
meta: {
keepAlive: false, // 用于在 <keep-alive> 中使用,判断是否需要进行缓存
auth: false, // 判断是否需要进行登录校验
title: '登录' /* 可以通过$route.meta.title 后取当前的描述信息、菜单信息 */
}
},
{
path: '*', /* 默认跳转到登录界面 */
redirect: {path: '/login'}
}
],
// <router-link to="/bar#anchor">/bar#anchor</router-link>
// 可以通过selector模拟滚动到锚点的行为 { selector: string, offset? : { x: number, y: number }}
scrollBehavior (to, from, savedPosition) {
if (savedPosition) { // 浏览器后退/前进时savedPosition可用
return savedPosition;
} else if (to.hash) {
return {
selector: to.hash
};
} else {
return new Promise((resolve, reject) => { // 异步滚动
setTimeout(() => {
resolve({x: 0, y: 0});
}, 500);
});
}
}
});
router.beforeEach((to, from, next) => {// 注册一个全局前置守卫
if (to.matched.some(m => m.meta.auth)) {// 判断是否需要校验
var a = true;
if (a) { // 获取
next(); // 校验通过,正常跳转到你设置好的页面
} else {
next({ // 校验失败,跳转至登录界面
path: '/login',
query: {
redirect: to.fullPath
} // 将跳转的路由path作为参数,用于在登录成功后获取并跳转到该路径
});
}
} else {
next(); // 不需要校验,直接跳转
}
});
export default router;
login.js
export default {
validator: null,
data () {
return {
isLogin: true
};
},
created () {
// 接受路由参数,并判断是登录还是注册页面(注:是$route而不是$router)
if (this.$route.params.isLogin !== undefined) {
this.isLogin = this.$route.params.isLogin;
}
}
};
原文地址:https://segmentfault.com/a/1190000012801479
vue路由知识整理的更多相关文章
- Vue 路由知识三(过渡动画及路由钩子函数)
路由的过渡动画:让路由有过渡动画,需要在<router-view>标签的外部添加<transition>标签,标签还需要一个name属性. <transition nam ...
- Vue 路由知识二(工程模式下路由的配置)
vue-router是一个插件包,所以我们还是需要用npm/cnpm来进行安装的:npm/cnpm install vue-router --save-dev. 在路由的核心文件:src/router ...
- vue 基本知识整理
1 每个Vue.js应用都是通过构造函数Vue创建一个Vue的根实例 2 可以扩展Vue构造器,从而使用预定义选项创建可复用的组件构造器 所有的Vue.js组件其实都是被扩展的Vue实例 每一个VUE ...
- vue初级知识总结
从我第一篇博客的搭建环境开始,就开始学习vue了,一直想将这些基本知识点整理出来,但是一直不知如何下手,今天刚好实战了两个小demo,所以就想趁这机会将以前的一起整理出来,这是vue最基础的知识,我有 ...
- Vue部分知识
一.本尊建议的学习顺序:https://zhuanlan.zhihu.com/p/23134551(侵删) 二.安装: 1.安装 Node.js,可以去Node.js的官网上下载: 2.(非必选)如果 ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- wifi基础知识整理
转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...
- 【OGG】OGG基础知识整理
[OGG]OGG基础知识整理 一.GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与 ...
- 14.vue路由&脚手架
一.vue路由:https://router.vuejs.org/zh/ 1.定义 let router = new VueRouter({ mode:"history/hash" ...
随机推荐
- node——进阶版服务器根据不同请求作出不同响应+响应html文件等文件
文件目录结构如下 resource文件里面放了css文件和图片等,view文件里面是html文件 <!DOCTYPE html> <html lang="en"& ...
- Sona && Little Elephant and Array && Little Elephant and Array && D-query && Powerful array && Fast Queries (莫队)
vjudge上莫队专题 真的是要吐槽自己(自己的莫队手残写了2个bug) s=sqrt(n) 是元素的个数而不是询问的个数(之所以是sqrt(n)使得左端点每个块左端点的范围嘴都是sqrt(n)) 在 ...
- 从0实现一个React,个人总结
原文: https://github.com/hujiulong/blog/issues/4 个人总结:: 一.JSX和虚拟DOM import React from 'react'; import ...
- [JZOJ]100047. 【NOIP2017提高A组模拟7.14】基因变异
21 世纪是生物学的世纪,以遗传与进化为代表的现代生物理论越来越多的 进入了我们的视野. 如同大家所熟知的,基因是遗传因子,它记录了生命的基本构造和性能. 因此生物进化与基因的变异息息相关,考察基因变 ...
- java源码之HashMap和HashTable的异同
代码版本 JDK每一版本都在改进.本文讨论的HashMap和HashTable基于JDK 1.7.0_67 1. 时间 HashTable产生于JDK 1.1,而HashMap产生于JDK 1.2.从 ...
- oracle学习之第一个存储过程:打印Hello World
数据库对象:表.视图.索引.序列.同义词.存储过程.存储函数 存储过程:指的是存储在数据库中供全部用户程序调用的子程序叫存储过程.存储函数 存储过程和存储函数的同样点:完毕特定功能的程序 存储过程和存 ...
- Android 自己定义RecyclerView 实现真正的Gallery效果
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38173061 .本文出自:[张鸿洋的博客] 上一篇博客我使用自己定义Horizo ...
- hdu2546 饭卡 01-背包问题
转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2546 Problem ...
- Perl怎样过滤html标签
比方一串字符串 <div><b>123</b></div> 假设仅仅想拿到123怎么办呢? 用perl的正則表達式能够非常easy的做到. $str = ...
- kibana智能检索发送多次_msearch —— 配置index pattern,同时设置时间段,就知道到底是在哪些索引里去查找数据了
kibanasite/elasticsearch/log-*/_field_stats?level=indices 返回: {"_shards":{"total ...