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. CF868F Yet Another Minimization Problem 分治决策单调性优化DP

    题意: 给定一个序列,你要将其分为k段,总的代价为每段的权值之和,求最小代价. 定义一段序列的权值为$\sum_{i = 1}^{n}{\binom{cnt_{i}}{2}}$,其中$cnt_{i}$ ...

  2. 用c#查询各快递物流信息

    前面介绍过<用快递100接口查询各快递物流信息>,里面用的是API接口,但有些快递不支持这种方式,本文介绍的HtmlAPI支持所有快递公司. 支持包括EMS.邮政.顺丰和申通在内的所有公司 ...

  3. linux rpm安装 failed depenencie(失败的依赖关系)错误原因

    rpm安装nfs 出现failed depenencie 经查资料得知命令后加上--nodeps --force,就可以了 加上那两个参数的意义就在于,安装时不再分析包之间的依赖关系而直接安装,也就不 ...

  4. 小程序-camera

    camera 使用这个组件使用手机的拍摄功能.实现如下操作 打开拍摄画面,在手机上半屏显示拍摄取景,下面有一个拍摄按钮.点击后,取景器位置显示拍摄画面,下面显示确定取消按钮. 确定后,下方的预览图片列 ...

  5. FZU - 1901 Period II(kmp所有循环节)

    Problem Description For each prefix with length P of a given string S,if S[i]=S[i+P] for i in [0..SI ...

  6. Go 语言 HTTP Server 源码分析

    http://www.codeceo.com/go-http-server-code.html

  7. 商品详情页系统的Servlet3异步化实践

    http://jinnianshilongnian.iteye.com/blog/2245925 博客分类: 架构   在京东工作的这一年多时间里,我在整个商品详情页系统(后端数据源)及商品详情页统一 ...

  8. 洛谷P2414 阿狸的打字机

    题意:以trie的形式给出n个字符串,每次询问第x个字符串在第y个字符串中出现了几次. 解:总串长是n2级别的,所以不能用什么后缀自动机... [update]可以建triesam但是不知道trie上 ...

  9. malloc() 和 calloc()有啥区别

    calloc()在动态分配完内存后,自动初始化该内存空间为零(会将所分配的内存空间中的每一位都初始化为零). 而malloc()不初始化,里边数据是随机的垃圾数据. calloc(size_t n, ...

  10. eclipse中如何复制用点分隔的全类名

    结果: com.xxx..redis.service.JedisClient