VUE 之 路由 VueRouter
1、VueRouter的安装
1.1、https://unpkg.com/vue-router/dist/vue-router.js下载安装。
1.2、<script src="./static/vue-router.js"></script>
2、VueRouter的使用
我们在使用Vue中的属性十,都可以通过$属性名拿到它所对应的对象
$route 拿到的是一个object对象,里边有所有的信息
$router 拿到的是一个VueRouter实例化的对象,里边有VueRouter的所有方法。
<script>
// 1. 在Vue根实例中使用,VueRouter
Vue.use(VueRouter); let Home = {
template: `
<div>
<h1>这是主页页面</h1>
</div>
`
}; let Login = {
template: `
<div>
<h1>这是登录页面</h1>
</div>
`
}; let Register = {
template: `
<div>
<h1>这是注册页面</h1>
</div>
`
}; let App = {
// 第四步
// router-link会渲染成a标签,to会变成href属性,to后面是router中定义的路径
// 第五步
// router-view是页面内容的渲染出口
template: `
<div>
<router-link to="/">首页</router-link>
<router-link to="/login">登录</router-link>
<router-link to="/register">注册</router-link>
<router-view></router-view>
</div>
`, }; // 2. 第二步实例化一个router对象
// 本质上是将路径和页面内容绑定了对应关系
let router = new VueRouter({
routes: [
{
path: '/',
component: Home,
},
{
path: '/login',
component: Login,
},
{
path: '/register',
component: Register,
}
]
}); new Vue({
el: "#app",
template: `<App/>`,
// 第三步,在根实例中注册router对象
router: router, # 固定写法router
components: {
App,
}
});
</script>
3、VueRouter的路由命名
template: `
<div>
<router-link :to="{ name: 'home' }">首页</router-link>
<router-link :to="{ name: 'login' }">登录</router-link>
<router-link :to="{ name: 'register' }">注册</router-link> <router-view></router-view>
</div>
`,
}; # 在router-link中进行命名 :to='{name:'xx'}'
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'login',
path: '/login',
component: Login,
},
{
name: 'register',
path: '/register',
component: Register,
}
]
});
4、VueRouter之参数
template: `
<div>
<router-link :to="{ name: 'home'}">首页</router-link>
<router-link :to="{ name: 'userParams', params: { userId: 1} }">登录</router-link>
<router-link :to="{ name: 'userQuery', query: { userId: 2 } }">注册</router-link> <router-view></router-view>
</div>
`,
}; // 2. 第二步实例化一个router对象
// 本质上是将路径和页面内容绑定了对应关系
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
// xxx/1 如果参数是这种样式,在template中使用params:{userId:1}
name: 'userParams',
path: '/user/:userId',
component: userParams,
},
{
// xxx/?userId=1 如果参数是带?xx=xx的形式,在template中使用query:{userId:2}
name: 'userQuery',
path: '/user',
component: userQuery,
}
]
});
5、VueRouter之子路由
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'courses',
path: '/courses',
component: Courses,
children: [ # 创一个children的数组,里边包含的是子路由的内容
{
path: 'lightcourses',
component: LightCourses
},
{
path: 'degreecourses',
component: DegreeCourses
},
]
},
]
});
6、VueRouter之子路由append (将子路由路径拼接到父级路由后边)
<script>
Vue.use(VueRouter); let Home = {
template: `
<div>
<h1>这是首页页面</h1>
</div>
`
}; let Courses = {
template: `
<div>
<h1>这是课程页面</h1>
<router-link to="lightcourses" append>轻课</router-link> # 在注册的课程标签下的两个子路由的a标签中 加入append,就可以将路径拼接到父级路由后边
<router-link to="degreecourses" append>学位课</router-link> <router-view></router-view>
</div>
`
}; let LightCourses = {
template: `
<div>
<h1>这是轻课页面</h1>
</div>
`
}; let DegreeCourses = {
template: `
<div>
<h1>这是学位课程页面</h1>
</div>
`
}; let App = {
template: `
<div>
<router-link :to="{ name: 'home' }" >首页</router-link>
<router-link :to="{ name: 'courses'} " >课程页面</router-link> <router-view></router-view>
</div>
`
}; let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'courses',
path: '/courses',
component: Courses,
children: [ # chlidren 是子路由与父级路由的关系
{
path: 'lightcourses',
component: LightCourses
},
{
path: 'degreecourses',
component: DegreeCourses
},
]
},
]
}); new Vue({
el: "#app",
template: `<App/>`,
components: {
App,
},
router: router,
}) </script>
不写append:

写append:

7、VueRouter之重定向(redirect)
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'login',
path: '/login',
component: Login
},
{
name: 'pay',
path: '/pay',
redirect: '/login', # 哪里需要重定向直接加一个redirect:'/路径'
component: Pay,
},
]
});
8、VueRouter之钩子函数
<script>
// 1. 使用VueRouter
Vue.use(VueRouter); let Home = {
template: `
<div>
<h1>这是首页页面</h1>
</div>
`
}; let Login = {
template: `
<div>
<h1>这是登录页面</h1>
</div>
`
}; let Pay = {
template: `
<div>
<h1>这是支付页面</h1>
</div>
`
}; let App = {
// router-link会渲染成a标签,to会渲染成href
// router-view是内容的渲染出口
template: `
<div>
<router-link :to="{ name: 'home' }">首页</router-link>
<router-link :to="{ name: 'login' }">登录</router-link>
<router-link :to="{ name: 'pay' }">支付</router-link> <router-view></router-view>
</div>
`
}; // 2. 创建一个router对象
// 把a标签的锚点值和页面内容绑定了对应关系
let router = new VueRouter({
routes: [ # 固定写法routes:[数组]
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'login',
path: '/login',
component: Login
},
{
name: 'pay',
path: '/pay',
meta: { required_login: true }, # 固定写法用meta:{自定义变量名:true}
component: Pay,
},
]
}); // 通过router对象的beforeEach(function(to, from, next))
router.beforeEach(function (to, from, next) { # 三个参数:to 表示路由要访问的目的路径
console.log("to: ", to); from 表示从哪个路径访问跳转过来的,比如从登陆界面访问支付界面,from就是登陆界面的路径,to 就是支付的路径
console.log("from: ", from); next 表示接下来要去哪儿 ,next()如果里边没有参数,就表示接下来正常执行。
console.log("next: ", next);
if ( to.meta.required_login ) {
next('/login');
} else {
next();
}
}); new Vue({
el: "#app",
template: `<App/>`,
components: {
App,
},
// 在根实例中注册router对象
router: router,
}) </script>
9、VuRouter之去掉中间的那些多余的参数

let router = new VueRouter({
mode: 'history', # 只需要在router对象中加一个mode:'history',就可以去掉多余的参数,效果如下
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'login',
path: '/login',
component: Login
},
{
name: 'pay',
path: '/pay',
meta: { required_login: true },
component: Pay,
},
]
});

VUE 之 路由 VueRouter的更多相关文章
- vue.js路由vue-router
学习网址:https://segmentfault.com/blog/vueroad 转载至:https://segmentfault.com/a/1190000009350679#articleHe ...
- Vue 前端路由 vue-router
1.前端路由 后端路由:多页面,服务器端渲染好返回给浏览器. 前端路由:改变url不向服务器发送请求:前端可以监听url变化:前端可以解析url并执行相应操作. 前后端分离:后端只提供API来返回数据 ...
- vue.js路由vue-router(一)——简单路由基础
前言 vue.js除了拥有组件开发体系之外,还有自己的路由vue-router.在没有使用路由之前,我们页面的跳转要么是后台进行管控,要么是用a标签写链接.使用vue-router后,我们可以自己定义 ...
- Vue.js - 路由 vue-router 的使用详解2(参数传递)
一.使用冒号(:)的形式传递参数 1,路由列表的参数设置 (1)路由列表的 path 是可以带参数的,我们在路由配置文件(router/index.js)里以冒号的形式设置参数. (2)下面样例代码中 ...
- 一起学Vue:路由(vue-router)
前言 学习vue-router就要先了解路由是什么?前端路由的实现原理?vue-router如何使用?等等这些问题,就是本篇要探讨的主要问题. vue-router是什么 路由是什么? 大概有两种说法 ...
- Vue路由vue-router
前面的话 在Web开发中,路由是指根据URL分配到对应的处理程序.对于大多数单页面应用,都推荐使用官方支持的vue-router.Vue-router通过管理URL,实现URL和组件的对应,以及通过U ...
- 「Vue」起步 - vue-router路由与页面间导航
vue-router 我们知道路由定义了一系列访问的地址规则,路由引擎根据这些规则匹配找到对应的处理页面,然后将请求转发给页进行处理.可以说所有的后端开发都是这样做的,而前端路由是不存在"请 ...
- vue(5)—— vue的路由插件—vue-router 常用属性方法
前端路由 看到这里可能有朋友有疑惑了,前端也有路由吗?这些难道不应该是在后端部分操作的吗?确实是这样,但是现在前后端分离后,加上现在的前端框架的实用性,为的就是均衡前后端的工作量,所以在前端也有了路由 ...
- Vue.js之vue-router路由
vue学习的一系列,全部来自于表哥---表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 1概述 vue-r ...
随机推荐
- 【C#】穿马甲的流程控制语句
导读:话说当年选择.顺序.循环语句风靡整个VB,今年发现,那几个东西又换了件衣服,跑到了C#里蹦跶.开始,真被这几个穿马甲的吓了一跳,没看出来这是老伙伴.突然有一天,瞥见了脱下新衣的孩子们.哈哈哈哈. ...
- HDU 1423 Greatest Common Increasing Subsequence ——动态规划
好久以前的坑了. 最长公共上升子序列. 没什么好说的,自己太菜了 #include <map> #include <cmath> #include <queue> ...
- BZOJ 2331 [SCOI2011]地板 ——插头DP
[题目分析] 经典题目,插头DP. switch 套 switch 代码瞬间清爽了. [代码] #include <cstdio> #include <cstring> #in ...
- 基于注解的 Spring MVC(上)
什么是Spring MVC Spring MVC框架是一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC ...
- Spring-IOC源码解读2.2-BeanDefinition的载入和解析过程
1. 对IOC容器来说这个载入过程就像是相当于把BeanDefinition定义的信息转化成Spring内部表示的数据结构.容器对bean的管理和依赖注入过程都是通过对其持有的BeanDefiniti ...
- Longge的问题(bzoj 2705)
Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N). Input 一 ...
- 小Z的袜子(bzoj 2038)
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...
- *LOJ#6227. 「网络流 24 题」最长k可重线段集问题
$n \leq 500$条平面上的线段,问一种挑选方法,使得不存在直线$x=p$与挑选的直线有超过$k$个交点,且选得的直线总长度最长. 横坐标每个点开一个点,一条线段就把对应横坐标连一条容量一费用( ...
- oracle查询当前用户名下所有表
select * from all_tables where owner='TEST': TEST为用户名,用户名必须是大写. 查看当前登录的用户的表: select table_name from ...
- NOJ 1111 保险箱的密码 【大红】 [区间dp]
传送门 保险箱的密码 [大红] 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 118 测 ...