一、路由:

1、后端路由:

  对于普通网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;

2、前端路由:

  对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash之间有一个特点:HTTP请求中不会包含hash相关的内容;所以,单页面程序中的页面跳转主要用hash实现;

3、在单页面应用程序中,这种通过hash改变来切换页面的方式,称作前端路由!!!

二、安装:

官网:https://router.vuejs.org/zh/installation.html

JS:https://unpkg.com/vue-router/dist/vue-router.js

三、使用:

1、导入及创建对象:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>路由</title>
<script src="./lib/vue.js"></script>
<!-- .安装vue-router路由模块 -->
<script src="./lib/vue-router.js"></script>
<style></style>
</head>
<body>
<div id="app">
<!-- <a href="#/login">登录</a>
<a href="#/register">注册</a> --> <!-- router-link 默认渲染成一个 a 标签 -->
<router-link to="/login" tag="span">登录</router-link>
<router-link to="/register">注册</router-link> <!-- 这是 vue-router 提供的元素,专门用来当做占位符的,将来,
路由规则,匹配到的组件,就会展示到这个 router-view 中去-->
<!-- 我们可以把 router-view 认为是一个占位符 “ 留坑” -->
<router-view></router-view>
</div> <script>
var login = {
template: "<h1>登录组件</h1>"
};
var register = {
template: "<h1>注册组件</h1>"
};
// 2.创建一个路由对象,当导入 vue-router 包之后,在 window 全局对象中,就有了
//一个路由的构造函数,叫做 VueRouter
// 在new 路由对象的时候,可以为 构造函数,传递一个配置对象
var routerObj = new VueRouter({
// route 这个配置对象中的 route 表示【路由匹配规则】的意思
routes: [
//路由匹配规则
// 每个路由规则,都是一个对象,这个规则对象,身上,有两个必须的属性:
// 属性1:path 表示监听哪个路由链接地址
// 属性2: component 表示,如果路由是前面匹配到的 path,则展示 component 属性对应的那个组件
//component 的属性值,必须是一个组件的模板对象,不能是组件的引用名称
{ path: "/login", component: login },
{ path: "/register", component: register }
]
});
var vm = new Vue({
el: "#app",
data: {},
methods: {},
// 将路由规则对象,注册到VM 实例上,用来监听 url地址的变化,然后展示对应的组件
router: routerObj
});
</script>
</body>
</html>

2、重定向(打开时默认导向的位置:可以在地址栏上查看区别)

 { path: "/", redirect: "/login" },

例子中,是默认打开时就导向login页面

3、设置路由高亮的方式(两种:第二种直接样式里定义即可):

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>路由</title>
<script src="./lib/vue.js"></script>
<!-- 1.安装vue-router路由模块 -->
<script src="./lib/vue-router.js"></script>
<style>
/* 2.第二种设置路由高亮的方式---直接设置,不需要再定义 */
.router-link-active {
color: red;
font-weight: 800;
font-style: italic;
font-size: 80px;
text-decoration: underline;
background-color: green;
}
/* 1.1第一种设置路由高亮的方式--需要定义下 */
.myactive {
color: red;
font-weight: 800;
font-style: italic;
font-size: 80px;
text-decoration: underline;
background-color: green;
}
</style>
</head>
<body>
<div id="app">
<!-- <a href="#/login">登录</a>
<a href="#/register">注册</a> --> <!-- router-link 默认渲染成一个 a 标签 -->
<router-link to="/login">登录</router-link>
<router-link to="/register">注册</router-link> <!-- 这是 vue-router 提供的元素,专门用来当做占位符的,将来,
路由规则,匹配到的组件,就会展示到这个 router-view 中去-->
<!-- 我们可以把 router-view 认为是一个占位符 “ 留坑” -->
<router-view></router-view>
</div> <script>
var login = {
template: "<h1>登录组件</h1>"
};
var register = {
template: "<h1>注册组件</h1>"
};
// 2.创建一个路由对象,当导入 vue-router 包之后,在 window 全局对象中,就有了
//一个路由的构造函数,叫做 VueRouter
// 在new 路由对象的时候,可以为 构造函数,传递一个配置对象
var routerObj = new VueRouter({
// route 这个配置对象中的 route 表示【路由匹配规则】的意思
routes: [
//路由匹配规则
// 每个路由规则,都是一个对象,这个规则对象,身上,有两个必须的属性:
// 属性1:path 表示监听哪个路由链接地址
// 属性2: component 表示,如果路由是前面匹配到的 path,则展示 component 属性对应的那个组件
//component 的属性值,必须是一个组件的模板对象,不能是组件的引用名称
// redirect 是重定向,定义打开页面的默认的导向哪个页面,可以在地址栏中具体查看
{ path: "/", redirect: "/login" },
{ path: "/login", component: login },
{ path: "/register", component: register }
]
// 1.2第一种设置路由高亮的方式--需要定义的部分
// linkActiveClass: "myactive"
});
var vm = new Vue({
el: "#app",
data: {},
methods: {},
// 将路由规则对象,注册到VM 实例上,用来监听 url地址的变化,然后展示对应的组件
router: routerObj
});
</script>
</body>
</html>

4、设置路由的动画:

样式内加上:

 .v-enter,
.v-leave-to {
opacity: 0;
transform: translateX(150px);
}
.v-enter-active,
.v-leave-active {
transition: all 0.8s ease;
}

然后:

<transition mode="out-in">
<router-view></router-view>
</transition>

Vue学习之路由vue-router小结(九)的更多相关文章

  1. day 82 Vue学习二之vue结合项目简单使用、this指向问题

    Vue学习二之vue结合项目简单使用.this指向问题   本节目录 一 阶段性项目流程梳理 二 vue切换图片 三 vue中使用ajax 四 vue实现音乐播放器 五 vue的计算属性和监听器 六 ...

  2. day 81 Vue学习一之vue初识

      Vue学习一之vue初识   本节目录 一 Vue初识 二 ES6的基本语法 三 Vue的基本用法 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 vue初识 vue称为渐进式js ...

  3. day 82 Vue学习三之vue组件

      Vue学习三之vue组件   本节目录 一 什么是组件 二 v-model双向数据绑定 三 组件基础 四 父子组件传值 五 平行组件传值 六 xxx 七 xxx 八 xxx 一 什么是组件 首先给 ...

  4. day 81 Vue学习二之vue结合项目简单使用、this指向问题

    Vue学习二之vue结合项目简单使用.this指向问题   本节目录 一 阶段性项目流程梳理 二 vue切换图片 三 vue中使用ajax 四 vue实现音乐播放器 五 vue的计算属性和监听器 六 ...

  5. day 80 Vue学习一之vue初识

    Vue学习一之vue初识   本节目录 一 Vue初识 二 ES6的基本语法 三 Vue的基本用法 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 vue初识 vue称为渐进式js框架 ...

  6. Vue学习之路由vue-router传参及嵌套小结(十)

    一.路由传递参数: 1.使用query传值: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  7. vue学习之用 Vue.js + Vue Router 创建单页应用的几个步骤

    通过vue学习一:新建或打开vue项目,创建好项目后,接下来的操作为: src目录重新规划——>新建几个页面——>配置这几个页面的路由——>给根实例注入路由配置 src目录重整 在项 ...

  8. vue学习之六路由系统

    一.vueRouter实现原理 VueRouter的实现原理是根据监控锚点值的改变,从而不断修改组件内容来实现的,我们来试试不使用VueRouter,自己实现路由控制,如下代码: <!DOCTY ...

  9. vue学习笔记:vue的认识与特点与获取

    Vue了解 Vue:读作 view Vue是一个渐进式框架 与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计. Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整 ...

  10. day 83 Vue学习三之vue组件

    本节目录 一 什么是组件 二 v-model双向数据绑定 三 组件基础 四 父子组件传值 五 平行组件传值 六 xxx 七 xxx 八 xxx 一 什么是组件 首先给大家介绍一下组件(componen ...

随机推荐

  1. 网站调试时记得关闭火狐adblock插件

    由于特殊需要,xmyanke需要在网站右侧添加一个弹窗,第一个网站加上代码后可以正常显示,第二个网站却怎么也看不到图片,同样的安装方法为什么差别那么大呢?重新复制代码还是不行,再试一遍,依然如此,wi ...

  2. mybatis框架,使用foreach实现复杂结果的查询--循环集合数组

    需求:假定现在查询出用户角色是2和3指定的用户列表信息,并进行展示 接口: /** * 需求:传入指定的用户角色,用户角色有1-n,获取这些用户角色下的用户列表信息 * @param roleids ...

  3. 【java】字符串截取

    String a = 'abcdef';String a = a.substring(0,1); a = 'a'; substring(int beginIndex, int endIndex) be ...

  4. celery异步任务、定时任务

    阅读目录 一 什么是Celery? 二 Celery的使用场景 三 Celery的安装配置 四 Celery异步任务 五Celery定时任务 六在Django中使用Celery   一 什么是Cele ...

  5. prototype、__proto__、constructor

    prototype:每个函数都有一个prototype属性,这个属性指向一个对象,这个对象叫原型对象. 作用:节约内存.扩展属性和方法.可以实现类之间的继承 __proto__:每个通过构造函数new ...

  6. 【BZOJ4722】由乃

    [BZOJ4722]由乃 题面 bzoj 题解 考虑到区间长度为\(14\)时子集个数\(2^{14}>14\times 1000\),由抽屉原理,区间长度最多为\(13\)(长度大于这个值就一 ...

  7. .NET三层架构开发初步

    转自:https://www.cnblogs.com/weilengdeyu/archive/2013/01/04/2844847.html 今天咱们来谈下三层架构.说到三层架构,搞过点程序的可能都知 ...

  8. WPF 数据绑定,界面刷新的两种方法-----INotifyPropertyChanged

    .Netformwork4.0及以下版本 -------INotifyPropertyChanged 命名空间: System.ComponentModel 后台代码 public partial c ...

  9. Java集合详解3:一文读懂Iterator,fail-fast机制与比较器

    <Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...

  10. leetcode 947. 移除最多的同行或同列的石头

    题目描述: 在二维平面上,我们将石头放置在一些整数坐标点上.每个坐标点上最多只能有一块石头. 现在,move 操作将会移除与网格上的某一块石头共享一列或一行的一块石头. 我们最多能执行多少次 move ...