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 ...
随机推荐
- POJ 1330:Nearest Common Ancestors【lca】
题目大意:唔 就是给你一棵树 和两个点,问你这两个点的LCA是什么 思路:LCA的模板题,要注意的是在并查集合并的时候并不是随意的,而是把叶子节点合到父节点上 #include<cstdio&g ...
- vector容器中添加和删除元素
添加元素: 方法一: insert() 插入元素到Vector中 iterator insert( iterator loc, const TYPE &val ); //在指定位置loc前插入 ...
- 在 Linux 实例上自动安装并运行 VNC Server
原文网址:https://help.aliyun.com/knowledge_detail/41181.html?spm=5176.8208715.110.11.4c184ae8mlC7Yy 您可以使 ...
- ElasticSearch中Filter和Query的异同
如下例子,查找性别是女,所在的州是PA,过滤条件是年龄是39岁,balance大于等于10000的文档: { "query": { "bool": { &quo ...
- UOJ#370. 【UR #17】滑稽树上滑稽果
$n \leq 1e5$个点,每个点有个权值$a_i \leq 2e5$.现将点连成树,每个点$i$的链接代价为$a_i \ \ and \ \ i父亲的代价$,这里的$and$是二进制按位与,求最小 ...
- 清清月儿.net学习技术资料网站
原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] http://blog.csdn.net/21aspnet/
- C++练习,计算间隔天数
time_t time(time_t *time) 从1970年1月1日到到现在的秒数,如果系统时间不存在,返回1char *ctime(const time_t *time) 返回以:day mon ...
- SPOJ 1479 +SPOJ 666 无向树最小点覆盖 ,第二题要方案数,树形dp
题意:求一颗无向树的最小点覆盖. 本来一看是最小点覆盖,直接一下敲了二分图求最小割,TLE. 树形DP,叫的这么玄乎,本来是线性DP是线上往前\后推,而树形DP就是在树上,由叶子结点状态向根状态推. ...
- (9)C#连mysql
1官网下载 dll 2. using MySql.Data.MySqlClient; 3. <add key="con_MES" value="server=192 ...
- php 处理大文件方法 SplFileObject
$csv_file = 'tmp.csv'; $start = isset($_GET['start']) ?intval($_GET['start']) : 1; // 从第几行开始读取 $num ...