router 导入

import Vue from 'vue'
import Router from 'vue-router'
import order from '@/view/New/order.vue'
import Son1 from '@/view/New/son1.vue'
import Son2 from '@/view/New/son2.vue'
import Son3 from '@/view/New/son3.vue' Vue.use(Router) export default new Router({
linkActiveClass: 'u-link--Active'
, // 这是链接激活时的class
routes: [
{ path: '/', redirect: '/4' },
{ path: '/4', name: 'order',redirect: '/4/son1', component: order, children: [
{ path: '/4/son1', name: "son1", component: Son1 },
{ path: '/4/son2', name: "son2", component: Son2 },
{ path: '/4/son3', name: "son3", component: Son3 }
]}
]
})

order.vue

<template>
<div class="detail">
<div class="box">
<p>父组件</p>
<router-link to="/4/son1" active-class="u-link--Active">首页</router-link>
<router-link to="/4/son2" active-class="u-link--Active">电影</router-link>
<router-link to="/4/son3" active-class="u-link--Active">关于</router-link>
</div>
<!-- 这是一个占位符,将来,通过路由规则,匹配到的组件,会被替换到 router-view 所在的位置 -->
<router-view></router-view>
</div>
</template> <style lang="less" scoped>
.detail {
margin: 5px;
padding: 10px;
border: 2px dashed salmon;
height: 400px;
background-color: #f6f6f6;
.box {
margin: 5px;
padding: 10px;
border: 2px dashed blue;
p {
color: salmon;
}
.u-link--Active {
color: aqua;
}

}
}
</style>

son.vue:

<template>
<div>
<h1>这是son1.vue 首页 子组件</h1>
</div>
</template> <style lang="less" scoped>
div {
margin: 5px;
padding: 10px;
border: 2px dashed red;
h1 {
font-size: 26px;
font-weight: 700;
color: orange;
}
}
</style>

son2:

<template>
<div>
<h1>这是son2.vue 电影 子组件</h1>
</div>
</template> <style lang="less" scoped>
div {
margin: 5px;
padding: 10px;
border: 2px dashed blue;
h1 {
font-size: 26px;
font-weight: 700;
color: red;
}
}
</style>

son3:

<template>
<div>
<h1>这是son3.vue 关于子组件</h1>
</div>
</template> <style lang="less" scoped>
div {
margin: 5px;
padding: 10px;
border: 2px dashed green;
h1 {
font-size: 26px;
font-weight: 700;
color: palevioletred;
}
}
</style>

路由规则的匹配过程

  1. 用户点击 页面的 路由链接router-link,点击的一瞬间,就会修改浏览器地址栏中的Hash地址

  2. 当 hash 地址被修改以后,会立即被 vue-router 监听到,然后进行 路由规则的 匹配;最终,找到 要显示的组件;

  3. 当 路由规则匹配成功以后,就找到了要显示的组件,然后把这个组件,替换到页面指定的路由容器router-view 中

设置路由高亮的两种方式和重定向

  1. 通过路由默认提供的 router-link-active, 为这个类添加自己的高亮样式即可;

  2. 通过路由构造函数,在传递路由配置对象的时候,提供 linkActiveClass 属性,来覆盖默认的高亮类样式;

测试:

Vue-router(3)之 router-link 和 router-view 使用的更多相关文章

  1. vue 组件开发、vue自动化工具、axios使用与router的使用(3)

    一. 组件化开发 1.1 组件[component] 在网页中实现一个功能,需要使用html定义功能的内容结构,使用css声明功能的外观样式,还要使用js定义功能的特效,因此就产生了一个功能先关的代码 ...

  2. [ vue ] quasar框架踩坑:在vue文件外导入路由,执行router.push('/')没有效果

    问题描述: 1. 如图所示的项目结构目录, axios.js 文件负责拦截全局请求和回复,我在拦截回复的代码中写了:如果服务器回复了一个401错误,则执行Router.push('/'),但是该方法失 ...

  3. 【Vue】【Router】手动跳转用 this.$router.push() 时 $router 未定义的问题

    初入Vue,手写路由跳转时的问题: toXxxRoute: () => { this.$router.push({'path': '/xxx', 'name': 'xxx'}) } 由于使用了箭 ...

  4. Vue.js 的几点总结Watchers/router key/render

    Vue.js 的几点总结,下面就是实战案例,一起来看一下. 第一招:化繁为简的Watchers 场景还原: 1 2 3 4 5 6 7 8 created(){   this.fetchPostLis ...

  5. [React Router v4] Style a Link that is Active with NavLink

    We often need to be able to apply style to navigation links based on the current route. In React Rou ...

  6. vue路由中 Navigating to current location ("/router") is not allowed

    报错原因:多次点击同一路由,导致路由被多次添加 解决方法: router/index中添加以下代码: //router/index.js Vue.use(VueRouter) //导入vue路由 co ...

  7. vue项目苹果微信端使用this.$router.go(-1)返回上一页,上一页并不会重新加载的问题

    window.addEventListener('pageshow', function(e) { // 通过persisted属性判断是否存在 BF Cache if (e.persisted) { ...

  8. [React Router] Prevent Navigation with the React Router Prompt Component

    In this lesson we'll show how to setup the Prompt component from React Router. We'll prompt with a s ...

  9. [Angular Router] Lazy loading Module with Auxiliary router

    Found the way to handle Auxiliary router for lazy loading moudle and erge load module are different. ...

  10. 聊聊 Vue 的双向数据绑定,Model 如何改变 View,View 又是如何改变 Model 的

    todo defineProperty() 参考: https://www.cnblogs.com/wangjiachen666/p/9883916.html

随机推荐

  1. 侯捷C++学习(二)

    #include <iostream>using namespace std;class complex{ public: complex (double r= 0, double i = ...

  2. 工具类css框架

    @charset "UTF-8"; * {     -webkit-box-sizing: border-box;     box-sizing: border-box;      ...

  3. 抓取屏幕并压缩生成HBITMAP

    HBITMAP GetScreenBmp() { HWND hwnd = ::GetDesktopWindow(); HDC hsrc = ::GetDC(hwnd); HDC hmemdc = :: ...

  4. django-ckeditor使用

    django-ckeditor 1 安装 pip install ckeditor 2 配置 INSTALLED_APPS中添加 'ckeditor', 修改写入字段的格式 主题相关配置(settin ...

  5. Windows平台整合SpringBoot+KAFKA__第3部分_代码部分(结束)

    重要的地方说下,算是给自己提醒,也给阅读者凑合着看看吧: (1)序列化.反序列化: 注意看这个文章 https://www.jianshu.com/p/5da86afed228 很多网上的例子都是 推 ...

  6. IDEA 分屏显示

    效果: 步骤: 对着某个标签页单击右键,选择Split Vertically或者Split Horizontally即可.

  7. Swift 元组 Tuple

    let infoArray:[Any] = ["jack",18,1.88] let infoName=infoArray[0] as!String //此处为Any类型强转为St ...

  8. 逆向-PE导出表

    PE-导出表 ​ 动态链接库要想给别人用实现加载时或运行时链接就必须提供函数和数据的地址.exe一般不会有这个,大部分是DLL文件的.导出分为名字导出和序号导出. 名字导出先找名字,再通过名字表的索引 ...

  9. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-list-alt

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  10. Node.js 介绍

    章节 Node.js 介绍 Node.js 入门 Node.js 模块 Node.js HTTP模块 Node.js 文件系统模块 Node.js URL模块 Node.js NPM Node.js ...