写点什么

【VueRouter 源码学习】第二篇 - 路由的配置和使用

用户头像
Brave
关注
发布于: 刚刚
【VueRouter 源码学习】第二篇 - 路由的配置和使用

一,前言


上篇,介绍了源码环境搭建与路由模式,主要涉及以下几个点:


  • 完成了 VueRouter 源码项目开发环境的搭建;

  • 介绍了 Hash 和 History 两种路由模式;


本篇,路由的使用介绍;



二,VueRouter 的使用

2.1,安装依赖

npm install vue-router
复制代码

2.2,注册路由插件,导出路由实例

创建 router.js 管理路由插件的配置,并导出 Router 实例:


import Vue from 'vue';import Router from './vue-router';
// 通过 Vue.use 使用 Router 插件:// 全局注册两个组件:router-link、router-view;// 为实例提供两个原型属性:$router,$route;Vue.use(Router);
export default new Router({ mode:'hash', routes:[ { path:'/', // 路径 name:'', // 名字 component:ABC // 路径显示的组件 } ]});
复制代码

2.3,标签和属性的介绍


执行Vue.use(Router)之后,默认会调用 Router 插件的 install 方法:


  • 全局注册两个组件:<router-link><router-view>

  • 并且为 vue 实例提供两个原型上的属性:$router$route


以下内容来自 VueRouter 官网:



2.4,配置视图组件


创建视图组件: views/Home.vue 和 views/Mine.vue:

<!-- views/Home.vue --><template>  <div>首页</div></template>
<!-- views/Mine.vue --><template> <div>我的</div></template>
复制代码


引入视图组件,配置路由和视图的映射关系:

import Vue from 'vue';import Router from './vue-router';import Router from './node_modules/vue-router';import Home from './views/Home';import Mine from './views/Mine';
Vue.use(Router);
export default new Router({ mode:'hash', routes:[ { path:'/', // 路径 name:'', // 名字 component: Home // 路径显示的组件 },{ path:'/', name:'', component: Mine } ]});
复制代码

2.5,将 Router 实例注册到 Vue 实例中


引入 router.js 中配置完成的路由实例,并将路由实例注册到 Vue 实例中:

// main.js
import Vue from 'vue';import router from './router'; // 导入路由配置
const vm = new Vue({ el:'#app', router, // 将路由实例注册到 Vue 实例中 render:(h)=>{ return h('h1', {}, 'Hello Vue Router'); }});
复制代码

2.6,配置路由组件的渲染位置


创建根组件 App.vue 用于显示视图渲染后的结果:

<template>    <div>        <!-- 页面渲染结果 -->        <router-view></router-view>    </div></template>
复制代码


使用 h 方法渲染 App.vue,使 App.vue zuo 作为视图入口:

import Vue from 'vue';import router from './router';import App from './App.vue';
const vm = new Vue({ el:'#app', router, render:(h)=>{ return h(App);// 使用 h 方法渲染 App 组件 }});
复制代码

2.7,启动服务并测试


vue serve
复制代码


根据路由配置,测试对应视图的显示:

访问首页:http://localhost:8080/#/

访问我的:http://localhost:8080/#/ mine

备注:由于理由使用了 hash 模式,URL 默认会被添加 '/#/' 部分


2.8,添加路由的切换

<template>    <div>        <!-- 添加路由切换 -->        <router-link to="/">跳转至首页</router-link>        &nbsp        <router-link to="/mine">跳转至我的</router-link>        <!-- 显示页面渲染的内容 -->        <router-view></router-view>    </div></template>
复制代码

2.9,测试路由切换效果


点击跳转到首页,浏览器访问:http://localhost:8080/#/

点击跳转到我的,浏览器访问:http://localhost:8080/#/mine

2.10,实例属性 $route$router


执行Vue.use(Router)之后,默认会调用 Router 插件的 install 方法:


  • 全局注册两个组件:<router-link><router-view>

  • 并且为 vue 实例提供两个原型上的属性:$router$route


测试 Vue 实例上的 route:

// views/Home.vue
<template> <div>首页</div></template>
<script>export default { mounted(){ // this.$route:路由相关的属性 // this.$router:路由相关的方法 console.log('this.$route', this.$route) console.log('this.$router', this.$router) }}</script>
复制代码


  • $route:包含了路由相关的属性;如:name、hash、meta 等;

  • $router:包含了路由相关的方法;如:history API(push、replace、go);

2.11,嵌套路由的使用和注意事项


VueRoute 支持嵌套路由(理论上是无限级的);


测试:在 mine 视图中添加子路由:

import Vue from 'vue';import Router from './node_modules/vue-router';import Home from './views/Home';import Mine from './views/Mine';
Vue.use(Router);
export default new Router({ mode:'hash', routes:[ { path:'/', component: Home },{ path:'/mine', component: Mine, children: [{ // 子路由 path: 'user', // 如果是 /user 会被认为根路径,所以不能有/ component: { render:(h)=><h1>个人信息</h1> } }, { path: 'address', component: { render:(h)=><h1>地址管理</h1> } } ] } ]});
复制代码


备注:
若子路由路径的开头为'/',将表示为根路径;子路由一般不使用'/'开头;如:path:'/user' -> http://localhost:8080/#/user
子路由路径开头使用'/',需要配置为准确的 URL 地址;如:path:'/mine/user' -> http://localhost:8080/#/mine/user
复制代码


在我的页面添加 router-view 标签,配置个人信息和地址管理的渲染位置:

<template>  <div>我的    <router-link to="/mine/user">我的-个人信息</router-link>    &nbsp    <router-link to="/mine/address">我的-地址管理</router-link>    <router-view></router-view>  </div></template> 
复制代码


测试子路由效果:


我的页面:

点击路由切换子页面:




三,结尾


本篇,介绍了路由的配置和使用,主要包含以下内容:


  • 路由插件的安装、配置和使用;

  • 介绍了 VueRouter 主要功能,标签和属性;

  • 介绍了嵌套路由的使用和注意事项;


下篇,介绍路由插件 install 的实现;

用户头像

Brave

关注

还未添加个人签名 2018.12.13 加入

还未添加个人简介

评论

发布
暂无评论
【VueRouter 源码学习】第二篇 - 路由的配置和使用