• Vue-Router

    Vue-Router

    路由的概念相信大部分同学并不陌生,它的作用就是根据不同的路径映射到不同的视图。我们在用 Vue 开发过实际项目的时候都会用到 Vue-Router 这个官方插件来帮我们解决路由的问题。Vue-Router 的能力十分强大,它支持 hashhistoryabstract 3 种路由方式,提供了 <router-link><router-view> 2 种组件,还提供了简单的路由配置和一系列好用的 API。

    大部分同学已经掌握了路由的基本使用,但使用的过程中也难免会遇到一些坑,那么这一章我们就来深挖 Vue-Router 的实现细节,一旦我们掌握了它的实现原理,那么就能在开发中对路由的使用更加游刃有余。

    同样我们也会通过一些具体的示例来配合讲解,先来看一个最基本使用例子:

    1. <div id="app">
    2. <h1>Hello App!</h1>
    3. <p>
    4. <!-- 使用 router-link 组件来导航. -->
    5. <!-- 通过传入 `to` 属性指定链接. -->
    6. <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    7. <router-link to="/foo">Go to Foo</router-link>
    8. <router-link to="/bar">Go to Bar</router-link>
    9. </p>
    10. <!-- 路由出口 -->
    11. <!-- 路由匹配到的组件将渲染在这里 -->
    12. <router-view></router-view>
    13. </div>
    1. import Vue from 'vue'
    2. import VueRouter from 'vue-router'
    3. import App from './App'
    4. Vue.use(VueRouter)
    5. // 1. 定义(路由)组件。
    6. // 可以从其他文件 import 进来
    7. const Foo = { template: '<div>foo</div>' }
    8. const Bar = { template: '<div>bar</div>' }
    9. // 2. 定义路由
    10. // 每个路由应该映射一个组件。 其中"component" 可以是
    11. // 通过 Vue.extend() 创建的组件构造器,
    12. // 或者,只是一个组件配置对象。
    13. // 我们晚点再讨论嵌套路由。
    14. const routes = [
    15. { path: '/foo', component: Foo },
    16. { path: '/bar', component: Bar }
    17. ]
    18. // 3. 创建 router 实例,然后传 `routes` 配置
    19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    20. const router = new VueRouter({
    21. routes // (缩写)相当于 routes: routes
    22. })
    23. // 4. 创建和挂载根实例。
    24. // 记得要通过 router 配置参数注入路由,
    25. // 从而让整个应用都有路由功能
    26. const app = new Vue({
    27. el: '#app',
    28. render(h) {
    29. return h(App)
    30. },
    31. router
    32. })

    这是一个非常简单的例子,接下来我们先从 Vue.use(VueRouter) 说起。

    原文: https://ustbhuangyi.github.io/vue-analysis/vue-router/