Vue 开发实战生态篇 # 19:Vue Router的使用场景
Posted 凯小默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue 开发实战生态篇 # 19:Vue Router的使用场景相关的知识,希望对你有一定的参考价值。
说明
【Vue 开发实战】学习笔记。
传统开发模式
www.xxx.com
—— index.htmlwww.xxx.com/about
—— about.htmlwww.xxx.com/xxx
—— xxx.html
单页面(SPA)开发模式
www.xxx.com
—— index.htmlwww.xxx.com/about
—— index.htmlwww.xxx.com/xxx
—— index.html
解决的问题
- 监听 URL 的变化,并在变化前后执行相应的逻辑
- 不同的 URL 对应不同的不同的组件
- 提供多种方式改变 URL 的 API ( URL的改变不能导致浏览器刷新)
使用方式
- 提供一个路由配置表,不同 URL 对应不同组件的配置
- 初始化路由实例 new VueRouter()
- 挂载到 Vue 实例上
- 提供一个路由占位,用来挂载 URL 匹配到的组件
实战例子
完整的请看:https://github.com/kaimo313/vue-development-practice/tree/master/router-demo
router-demo\\src\\main.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'
import routes from './routes'
Vue.config.productionTip = false
Vue.use(VueRouter)
const router = new VueRouter(
mode: 'history',
routes,
)
new Vue(
router,
render: h => h(App),
).$mount('#app')
router-demo\\src\\routes.js
import RouterDemo from './components/RouterDemo'
import RouterChildrenDemo from './components/RouterChildrenDemo'
const routes = [
path: '/foo', component: RouterDemo, name: '1' ,
path: '/bar', component: RouterDemo, name: '2' ,
// 当 /user/:id 匹配成功,
// RouterDemo 会被渲染在 App 的 <router-view /> 中
path: '/user/:id',
component: RouterDemo,
name: '3',
props: true,
children: [
// 当 /user/:id/profile 匹配成功,
// RouterChildrenDemo 会被渲染在 RouterDemo 的 <router-view/> 中
path: 'profile',
component: RouterChildrenDemo,
name: '3-1'
,
// 当 /user/:id/posts 匹配成功
// RouterChildrenDemo 会被渲染在 RouterDemo 的 <router-view/> 中
path: 'posts',
component: RouterChildrenDemo
]
,
path: '/a', redirect: '/bar' ,
path: '*', component: RouterDemo, name: '404'
]
export default routes
router-demo\\src\\components\\RouterDemo.vue
<template>
<div>
<router-link to="/foo">Go to Foo</router-link>
<br/>
<router-link to="/user/12">Go to /user/12</router-link>
<br/>
<router-link to="/user/12/profile">Go to /user/12/profile</router-link>
<br/>
<router-link to="/other">Go to 404</router-link>
<br/>
<router-link to="/a">Go to a 重定向到 bar</router-link>
<br/>
<a href="#/foo">Go to Foo</a>
<br/>
<button @click="$router.push('foo')">Go to Foo</button>
<p>id: id</p>
<p>routerInfo</p>
<router-view></router-view>
</div>
</template>
<script>
export default
props: ['id'],
computed:
routerInfo()
const fullPath, path, name, params, query, meta = this.$route
return
fullPath, path, name, params, query, meta
</script>
router-demo\\src\\components\\RouterChildrenDemo.vue
<template>
<div>
routerInfo
</div>
</template>
<script>
export default
computed:
routerInfo()
const fullPath, path, name, params, query, meta = this.$route
return
fullPath, path, name, params, query, meta
</script>
效果如下:
以上是关于Vue 开发实战生态篇 # 19:Vue Router的使用场景的主要内容,如果未能解决你的问题,请参考以下文章
Vue 开发实战生态篇 # 17:Vuex核心概念及底层原理