Vue Router 是 Vue.js 官方的路由管理器

自动全局安装:

vue create 项目名称

手动配置:

1、安装

在app项目文件夹里面

npm i vue-router

2、在min.js下引入包

import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router';

3、使用use来引用(使用)

Vue.use(VueRouter);

4、需要配置router -> route.js

引入组件,配置路由表
配置路由表(当前是哪个路径需要执行哪个组件)

const routes = [
//配置什么路径就走哪个组件
{
path:'/', //根路径
component:app //app就是根
},
{
path: '/foo',//路径
component: Foo//组件
},
{
path: '/bar',
component: Bar
}
];
export default new VueRouter({
router:routes
//等同于
//router
})

在new vue-router时候,通过routes来引配置数

new Vue时候是通过router来引路由

5、放到跟下

 new Vue({
el:'#app',
render:()=>h,
router
})

6、渲染,在页面中定义router-view 标签

<router-link></router-link>
//有children时候,父组件必须有router-view
<router-view></router-view>
//路由匹配到的组件将渲染在这里
<router-link>//默认会渲染成一个a标签
<router-link tag="button">
//这样可以加一个按钮的样式

<router-link>

to属性

表示目标路由的链接

通过 to 属性指定目标地址
默认渲染成带有正确链接的 <a> 标签

/*字符串*/
<router-link to="home">home</router-link> /*v-bind 的 JS 表达式 */
如果是:to,路径要写成字符串 比如<router-link :to="'home'">Home</router-link> :to 可以是字符串也可以是对象 /*命名的路由 params*/
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link> /*带查询参数,下面的结果为 /register?plan=private*/
<router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>
:to="{path:'a'}"
:to="{params:{a:5}}"

注意:如果使用params,那么就不能定义path,改为使用name

tag属性

具有tag属性的router-link会被渲染成相应的标签

//比如生成一个按钮
<router-link tag ="button"></router-link>

replace属性

replace在routre-link标签中添加后,页面切换时不会留下历史记录

<router-link :to="/home" replace></router-link>

active-class属性

默认值 "router-link-active"

设置 链接激活时使用的 CSS 类名

<router-link :to="/home" active-class="u-link--Active">Home</router-link>

可以在router.js文件中设置

const router = new VueRouter({
mode: 'hash',
linkActiveClass: 'u-link--Active', // 这是链接激活时的class
})

 exact属性

开启router-link的严格模式,默认值 false

//这个链接只会在地址为 / 的时候被激活
<router-link :to="/" exact>home</router-link>

exact-active-class属性

默认值 router-link-exact-active

配置当链接被精确匹配的时候应该激活的 class

激活class 应用在外层元素

让激活 class 应用在外层元素,而不是 <a> 标签本身,可以用 <router-link> 渲染外层元素,包裹着内层的原生 <a> 标签

<router-link tag="li" to="/foo">
<a>/foo</a>
</router-link>

路由嵌套

路由嵌套就是有多层路由嵌套在一起,也就是子路由

栗子:

APP.vue文件

<template>
<div id="app">
<router-link to="/" tag="button">home</router-link>
<router-link to="/About" tag="button">about</router-link>
<router-view></router-view>
</div>
</template>
<script>
</script>
<style>
.actived{
background:orange;
}
</style>

About.vue文件

(里面包含sub1、sub2、sub3三个子路由页面)

<template>
<div class="about">
<h1>This is an about page</h1>
<router-link to="/about/sub1" tag="button">sub1</router-link>
<router-link to="/about/sub2" tag="button">sub2</router-link>
<router-link to="/about/sub3" tag="button">sub3</router-link>
<router-view></router-view>
</div>
</template>
<script>
export default {
name:'about'
}
</script>

router.js路由文件

 import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import Sub1 from '../views/sub/sub1.vue'
import Sub2 from '../views/sub/sub2.vue'
import Sub3 from '../views/sub/sub3.vue'
Vue.use(VueRouter); const routes = [
{
path:'/',
component:Home
},
{
path:'/About',
component:About,
children:[
{
path:'sub1',
component:Sub1
},
{
path:'sub2',
component:Sub2
},
{
path:'sub3',
component:Sub3
}
] }
] export default new VueRouter({
linkExactActiveClass:'actived',//精确匹配选中的样式
routes
});

在路由上挂一个children属性,children为一个数组

子路由路径不用加/

对于<router-view></router-view>的用法

如果有子级路由,那么记得在父级身上加<router-view></router-view>

此时组件就会在父级组件显示

不管嵌套多少层都遵循此规则,多级嵌套的话可以使用一个模板

正常写法中,一层路径(/xxx)对应一个router-view

比如url: /a/b/c

/a对应的就是App.vue中的router-view,/a进入a.vue

/a/b对应的就是a.vue中的router-view, /a/b进入b.vue

vue-router路由的更多相关文章

  1. 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI

    一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...

  2. Vue系列:Vue Router 路由梳理

    Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模块化的.基于组件的路由配置 路由参数. ...

  3. 04 Vue Router路由管理器

    路由的基本概念与原理 Vue Router Vue Router (官网: https://router.vuejs.org/zh/)是Vue.js 官方的路由管理器. 它和vue.js的核心深度集成 ...

  4. Vue Router路由管理器介绍

    参考博客:https://www.cnblogs.com/avon/p/5943008.html 安装介绍:Vue Router 版本说明 对于 TypeScript 用户来说,vue-router@ ...

  5. Vue Router 路由守卫:完整的导航解析流程

    完整的导航解析流程 1 导航被触发. 2 在失活的组件里调用离开守卫. 3 调用全局的 beforeEach 守卫. 4 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+). ...

  6. Vue Router路由守卫妙用:异步获取数据成功后再进行路由跳转并传递数据,失败则不进行跳转

    问题引入 试想这样一个业务场景: 在用户输入数据,点击提交按钮后,这时发起了ajax请求,如果请求成功, 则跳转到详情页面并展示详情数据,失败则不跳转到详情页面,只是在当前页面给出错误消息. 难点所在 ...

  7. Vue Router 路由实现原理

    一.概念 通过改变 URL,在不重新请求页面的情况下,更新页面视图. 二.实现方式 更新视图但不重新请求页面,是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有2种方式: 1.Hash  ...

  8. Vue - Router 路由

    路由的注册 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  9. vue router路由(三)

    当环境搭建及Vue语法与指令都有所了解,该说下router. build目录是打包配置文件 (不建议动) config是vue项目基本配置文件 dist是构建后文件 js 手动创建 (根据需要) no ...

  10. vue router路由跳转了,但是页面没有变(已解决)

    小白学习 router.js:两个组件之间跳转 但是路由变了,页面没有改变的原因是因为app.vue里面没有router-view(很关键)

随机推荐

  1. PHP linux ZendGuardLoader.so: undefined symbol: executor_globals

    /usr/xxx/php    xxx/xxx.php 报了这个错. 本人出现此问题的原因:  php执行程序路径错了. 解决: linux下执行   which php   命令  查看php真实路 ...

  2. 【BZOJ2576】[JSOI2011]序的计数 (动态规划)

    [BZOJ2576][JSOI2011]序的计数 (动态规划) 题面 BZOJ 题解 首先构建一个新的虚拟节点连接所有目标节点,强行将其作为第一个被访问的节点,这样子就解决了图不连通的问题. 除了目标 ...

  3. LINQ的基础使用方法

    //新建一个项目 //项目下新建一个App_Code文件夹 //在文件夹内添加一个LINQ TO SQL,这个操作就相当于创建了一个实体类 //连接数据库后把表拖入到服务器资源管理器中 //创建数据访 ...

  4. IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法

    在使用下面这个写法时候UTF-8文件编码 在读取时候出现乱码问题. File myFile=new File("文件路径"); BufferedReader in = new Bu ...

  5. [hdu5215][Cycle]

    题目链接 思路 首先可以通过二分图染色找到奇环和一部分偶环.这个比较简单 但是还有一种偶环容易忽略. 如图(别问我为啥没节点4) 第一次可以找到1-2-3-1)这个奇环,第二次可以找到(3-5-6-3 ...

  6. 【洛谷P1164 小A点菜】

    题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家……餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:“随便点”. 题目描述 不过uim由于买了一些辅(e ...

  7. (基础 输入方法 栈)P1427 小鱼的数字游戏 洛谷

    题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的 ...

  8. Qt ------ 添加某个功能,比如(QSerialPort)注意事项

    添加某个功能,比如(QSerialPort),不仅需要保护头文件 还需要在.pro文件内添加 QT += serialport

  9. 打印流(PrintWriter )

    PrintWriter package cn.lijun.demo1; import java.io.File; import java.io.FileNotFoundException; impor ...

  10. String 类中的几个练习--获取指定字符串中,大写字母、小写字母、数字的个数||获取一个字符串中,另一个字符串出现的次数

    package cn.homework.demo1; public class GetCount { /* * 获取一个字符串中,另一个字符串出现的次数 * 思想: * 1. indexOf到字符串中 ...