本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 ) C- }% a( s4 O# F, x: z: E
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 7 Y3 L a) e0 `, z( i
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
# \9 g9 t( W# R1 N& v- <script src="https://unpkg.com/vue/dist/vue.js"></script>8 u: j, w- j5 M6 g- g( j, v; T
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
9 i% G! ?! H& o8 `( J" G' ] -
w! L4 V* Y5 e! ^0 y% @ - <div id="app">* B$ F/ D! y6 _0 q7 B% j
- <h1>Hello App!</h1>
9 o7 E- g0 s+ K( f) f( d - <p>
& l( {3 _6 d8 G& p7 I - <!-- 使用 router-link 组件来导航. -->
2 }! b& W) u, A9 P - <!-- 通过传入 `to` 属性指定链接. --> }0 `$ U$ D; z' A, g& F1 T
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
+ s: }* d0 F7 e T- k% [$ L9 X - <router-link to="/foo">Go to Foo</router-link>: q( G4 a& ^- n. E. R; o5 z4 P
- <router-link to="/bar">Go to Bar</router-link>9 [6 I$ B$ n7 U9 k, [" u
- </p>
3 \* h' \" ~8 X' o - <!-- 路由出口 -->
) q9 I7 [/ V+ t. I - <!-- 路由匹配到的组件将渲染在这里 -->
7 y) f( a/ |! d - <router-view></router-view>" g+ E9 } E6 J4 G
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
5 z+ C0 T1 K6 w7 s I3 z -
+ ^6 I1 l& I# L2 _# T6 h% X - // 1. 定义(路由)组件。
, ^7 Q5 W: c3 ] - // 可以从其他文件 import 进来
2 i0 W8 _- w$ u3 A: l4 u$ j3 U - const Foo = { template: '<div>foo</div>' }/ x7 E( E, ]$ R
- const Bar = { template: '<div>bar</div>' }
; H; @4 x' Q# q. O3 A" C% u - 0 l6 `/ a4 e5 ]5 l6 w2 W
- // 2. 定义路由
1 |& u B- b6 P0 O2 A5 z3 R - // 每个路由应该映射一个组件。 其中"component" 可以是
# y0 d$ a" R: I% q - // 通过 Vue.extend() 创建的组件构造器,
6 I2 h6 ?. t9 p6 L y5 N, {( J' K( M - // 或者,只是一个组件配置对象。
) w$ ~% q ]. [" T O - // 我们晚点再讨论嵌套路由。% J4 E; J0 R+ \7 W. c0 g
- const routes = [
5 a, I+ m: q$ A - { path: '/foo', component: Foo },1 Z% W& n) M, x; ^
- { path: '/bar', component: Bar }
9 ?& P+ y+ r) V% S! f, z - ]; r8 J5 C b9 {
-
1 i% D* r" B0 _% q. n! [ - // 3. 创建 router 实例,然后传 `routes` 配置0 N+ d! S- I8 E7 G+ i1 W) {
- // 你还可以传别的配置参数, 不过先这么简单着吧。! P6 b; [9 X+ i8 Q5 n+ ^
- const router = new VueRouter({, Q1 A9 N( ^) X; `( l! ]
- routes // (缩写)相当于 routes: routes
/ {/ J$ a) o/ `' X. S) R _" O, c - }); g. {% R/ x6 X, r
- * S5 |5 r) K; i
- // 4. 创建和挂载根实例。5 X" ~" e" g$ i# ]/ q9 v4 U
- // 记得要通过 router 配置参数注入路由,
) y7 C9 S% L. m5 x" H* | - // 从而让整个应用都有路由功能9 }( [7 w+ n) d
- const app = new Vue({: y! U* t" V) a
- router
[, X/ ?1 |( B2 Q/ a4 @8 h$ l - }).$mount('#app')
/ _( }. F; A5 B/ q5 K& A -
' E' F" y8 \0 ?0 O - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
. ?! A. l; C& U$ e3 g4 Q: L7 w下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm! g) t2 l7 d( D9 [+ x% I4 K
- cnpm install
& p) a4 E- U3 g( m$ Q - 4 [% }7 Y" Q5 {0 i2 E' n
- # 启动应用,地址为 localhost:8080
5 ?' ^, N) {( e S6 T - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:# X6 X- A9 Q9 G3 `
7 o: o2 n: \, i0 t' }3 P# \
4 \3 Q/ B. o9 k; I( R5 t9 k
) Y+ X7 w3 S4 o I1 }( O1 e0 |. ~2 [) r5 p& W% r: \/ r* f
4 f+ C2 I3 P3 z& M E5 J P! f' u" z) M9 G
6 _! `5 w6 A4 j' i1 j
2 s0 a: \! a5 V( Y) w! H4 [8 g8 m/ C; w- m t4 i
5 I: O! s3 ]8 s3 `8 Q+ m
! ]' W. l3 `; F0 \) a! C3 C/ V$ o
|