Vue 路由
对于大多数单页应用 (Single-Page Application, SPA),我们需要一种方法来将用户导航到应用的不同部分,同时不刷新整个页面。Vue Router 是 Vue.js 的官方路由管理器,它与 Vue 的核心深度集成,让构建带有路由功能的 SPA 变得轻而易举。
安装
如果你在创建项目时通过 create-vue 选择了添加 Vue Router,那么一切都已经为你配置好了。如果没有,你可以手动安装它:
然后,你需要创建一个路由实例并将其挂载到 Vue 应用上。
src/router/index.js
src/main.js
核心概念
1. router-link
router-link 是一个用于声明式导航的组件。它会被渲染成一个带有正确 href 的 <a> 标签。当用户点击它时,它会在内部调用 router.push(),从而改变 URL 而不重新加载页面。
2. router-view
router-view 是一个函数式组件,它会渲染路径匹配到的视图组件。你可以把它放在任何地方,以适应你的布局。
3. 动态路由匹配
我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件。例如,我们可能有一个 User 组件,它对于所有 ID 各不相同的用户,都要使用这个组件来渲染。我们可以在 path 中使用动态片段来达到这个效果:
现在,像 /users/johnny 和 /users/jolyne 这样的 URL 都会映射到同一个路由。
在组件内部,你可以通过 $route.params 来访问这些动态片段。
User.vue
4. 路由懒加载
当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应的组件,这样就更加高效了。Vue Router 支持这种“懒加载”机制。
这样,AboutView.vue 组件会被打包成一个独立的 chunk,只有在用户访问 /about 路径时才会被加载。