|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 ) e4 J9 U* _5 e# P$ J1 L" d# G3 r
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 / m& u! w3 E t
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
1 I" x( S5 M) A" {9 b- <script src="https://unpkg.com/vue/dist/vue.js"></script>
5 m& S& p4 f$ ? - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>: n7 d4 Y0 G& C* c3 A+ d
-
/ q! U0 F, a# w. [ - <div id="app">
+ ?) h3 ]/ M! c% ^; ~( D; x - <h1>Hello App!</h1>
{* i& u) k. p# v - <p>7 k$ {, s, R. j9 w
- <!-- 使用 router-link 组件来导航. -->
4 Z! S6 @* }2 ?8 T) a9 u8 d - <!-- 通过传入 `to` 属性指定链接. -->' d; }8 Z" |5 r% E9 r6 t
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->6 E' G& d7 q, E; T' U: \. l( `
- <router-link to="/foo">Go to Foo</router-link>5 \' Y* d) {& p
- <router-link to="/bar">Go to Bar</router-link>
6 c3 A; Y$ M) n8 W - </p>$ p( ]9 e6 a6 {) \* `: r) N
- <!-- 路由出口 -->. E6 k) o3 i7 h" {
- <!-- 路由匹配到的组件将渲染在这里 -->- i+ @8 g! u# _3 x, M& R+ Z
- <router-view></router-view>
0 {4 R1 q2 v) x5 c1 { - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
3 ]9 s1 O2 F, c8 D$ R# L - 5 ?' @2 d$ T4 p( M
- // 1. 定义(路由)组件。$ m, E, l0 y B6 O; B; Q
- // 可以从其他文件 import 进来( M9 @0 {- m0 t2 B0 l0 e) |% N: q
- const Foo = { template: '<div>foo</div>' }& k% w4 l2 ^1 G% e0 p7 J" M, L
- const Bar = { template: '<div>bar</div>' }/ b' h1 p. Z: Q( x/ I+ B! Z& j
- 3 q5 C0 q% R; D
- // 2. 定义路由
/ t& r" S7 F4 C) r* M& D" H - // 每个路由应该映射一个组件。 其中"component" 可以是
7 _* x m% n- s - // 通过 Vue.extend() 创建的组件构造器,7 p" f B7 Z8 M0 L: B; o
- // 或者,只是一个组件配置对象。
" n1 v, u( T3 Q! ?: @7 [! W/ L - // 我们晚点再讨论嵌套路由。
; s; Q$ }& J. q6 f4 \* B - const routes = [+ z" o+ a U: K) M
- { path: '/foo', component: Foo }," P' Y ^" Q# q2 l" v, ^
- { path: '/bar', component: Bar }
" d5 b8 y4 q6 s - ]
+ r5 }# L2 K# q3 Q+ L( U' z% s' g) r - 2 Z! S/ ]2 o( Z! o3 c8 L
- // 3. 创建 router 实例,然后传 `routes` 配置
5 m" i8 ?( C/ r1 L3 i/ V. y G2 h" I - // 你还可以传别的配置参数, 不过先这么简单着吧。
9 E. B% s: f5 j& T; x( e, n - const router = new VueRouter({# T: w! Q, s: ]4 j8 ?7 c
- routes // (缩写)相当于 routes: routes
4 y1 j* A- Y/ e j; t0 O9 P - })
/ i6 u, d- K" h3 C5 {4 O. `% O -
; [$ n: F/ _" ]+ X; d) @ - // 4. 创建和挂载根实例。
t7 J, Y2 b5 `3 E6 P. W+ w5 I - // 记得要通过 router 配置参数注入路由,
, _" g8 W) z* W4 F6 P: o - // 从而让整个应用都有路由功能9 e) ?! X' d/ Y9 t' B b5 C5 ]* @# A
- const app = new Vue({
( I) o; ]) C% h$ Z' _ - router! N- `6 `; I) k# I7 ]
- }).$mount('#app')0 y* N: P# P P/ u; \3 T* q
- 3 S0 y; {( j6 A1 o
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 # Y$ k) K! D* ?/ c
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
4 T- \. I7 n* X/ j2 b - cnpm install- E. F6 q+ A) V4 ]1 |
3 l; I+ j2 @- @- # 启动应用,地址为 localhost:8080
+ O- N1 |$ M# C3 [. C - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:9 _3 g' p# F! C' U& ~" ^2 A+ q4 N
" l! w) P# L" @! p( t5 x, u
, y* `( R8 W$ X+ D% Q( e. a9 e# L9 a
9 z7 c# ~7 {* G7 x
, C# P6 m) G0 Q, t2 W$ v6 u5 E! H" r
) C& {; U* u* E
" [* K# b% V) |. x
8 t& g% N' [; l. Y/ r
- ^4 e9 w2 m! [$ F$ N& S+ F9 k& U4 i$ T5 y* ]% ]5 b- e
|