一,前言
上篇,介绍了源码环境搭建与路由模式,主要涉及以下几个点:
本篇,路由的使用介绍;
二,VueRouter 的使用
2.1,安装依赖
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 方法:
以下内容来自 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,启动服务并测试
根据路由配置,测试对应视图的显示:
访问首页:http://localhost:8080/#/
访问我的:http://localhost:8080/#/ mine
备注:由于理由使用了 hash 模式,URL 默认会被添加 '/#/' 部分
2.8,添加路由的切换
<template> <div> <!-- 添加路由切换 --> <router-link to="/">跳转至首页</router-link>   <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 方法:
测试 Vue 实例上的 router和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>
复制代码
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>   <router-link to="/mine/address">我的-地址管理</router-link> <router-view></router-view> </div></template>
复制代码
测试子路由效果:
我的页面:
点击路由切换子页面:
三,结尾
本篇,介绍了路由的配置和使用,主要包含以下内容:
下篇,介绍路由插件 install 的实现;
评论