|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
, a' ]; V) Z% E0 H* S游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 3 H/ [: w0 m/ B% |2 Q8 ^5 Y L
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码, X/ v5 @2 u' Z5 o \9 }
- <script src="https://unpkg.com/vue/dist/vue.js"></script>
/ k7 `$ y# H2 x" }" Y) B - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
+ M; e' E/ {7 X- r7 H0 I | -
! ~, Z6 N5 y& I% @2 ~( C - <div id="app">4 M- p/ x0 a I
- <h1>Hello App!</h1>
8 N' Q" J* m+ ~. o ] - <p>
( C1 R0 W: g& A/ G1 z: e) E$ ~8 M: n - <!-- 使用 router-link 组件来导航. -->/ z& I4 V% ^2 u* ^
- <!-- 通过传入 `to` 属性指定链接. -->/ P3 L# j' P4 S( @/ D
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->/ Q7 Y- O" R ]! O9 J
- <router-link to="/foo">Go to Foo</router-link>
8 c5 y0 H: j0 I* F6 B B$ d" U - <router-link to="/bar">Go to Bar</router-link>! b% M+ l O! Y
- </p>1 o3 A/ R# t9 Z/ c- H
- <!-- 路由出口 -->- U0 c D; j7 G7 ?6 ]
- <!-- 路由匹配到的组件将渲染在这里 -->; n% c# d# l3 d7 S* ~+ f
- <router-view></router-view>! {3 {" V1 a3 }' T n$ H! B
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)1 l0 r9 d" \1 O) b% `* ^5 T8 \
-
0 y1 J! \- m5 O Q$ \ - // 1. 定义(路由)组件。: P3 S' F9 X3 }$ a* r# a8 k
- // 可以从其他文件 import 进来
9 [( h0 p8 I4 K. Y; F" a3 ~ - const Foo = { template: '<div>foo</div>' }
4 E" ~$ w. z! s. h: E - const Bar = { template: '<div>bar</div>' }
3 g9 O' J/ P/ S - 5 T7 f( k5 o, C& F( T5 O
- // 2. 定义路由( v @! }2 R4 U9 {: n4 O
- // 每个路由应该映射一个组件。 其中"component" 可以是. M# R% F' p& `; X8 E/ A
- // 通过 Vue.extend() 创建的组件构造器,
: |7 ]+ N$ W8 b4 c& M- U" P1 g - // 或者,只是一个组件配置对象。
7 t6 c }# u, P$ I: L z7 x- L: R. a - // 我们晚点再讨论嵌套路由。8 G( S# z' z& o$ N3 `$ y
- const routes = [& ~5 q/ i( F) @; X
- { path: '/foo', component: Foo },
9 o! y- Q0 D. h - { path: '/bar', component: Bar }
8 x! _# r" z5 b6 u7 n: e5 x - ]2 m. _8 K0 v" R8 W2 o
- 9 B! b8 H# {% D o! d' _3 K' p
- // 3. 创建 router 实例,然后传 `routes` 配置9 k: q; p+ a6 E$ G/ T [
- // 你还可以传别的配置参数, 不过先这么简单着吧。
& ~7 G- u7 n6 l. N - const router = new VueRouter({! l- D3 i, K4 c `" W9 g
- routes // (缩写)相当于 routes: routes
9 X! i, y0 u4 E! Z9 o - })6 N. I* q- I3 b1 ?* A" T$ F; ]
- 6 K' \+ j+ ? Y
- // 4. 创建和挂载根实例。
9 k7 }9 F# D4 s9 p: z; f9 F9 A9 C* ~ - // 记得要通过 router 配置参数注入路由,5 c4 ?( a! M' O q) T7 ~. _% _+ D
- // 从而让整个应用都有路由功能* X0 d* }6 _, Y1 O; ~
- const app = new Vue({3 a) N8 J: h( L" m
- router
- B# X _! }6 ] - }).$mount('#app')
7 c9 a) F+ i D m V - ! V Q- g% N1 R, d
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
# }) X4 l9 f k下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
; h" o8 N0 d- o9 @! g1 O O3 ^ - cnpm install2 P& f# ?# H3 S- D$ @
- / {6 q7 j& u$ i. E: t& M
- # 启动应用,地址为 localhost:8080$ a' m9 I8 ~% \6 z
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
0 p. t y# \% j. y! H- p4 G* ?. J. ]- y/ D
/ @! ^% w. ^( V0 I! u# y
, c4 ?$ M" |+ R
8 H6 r# k. Y% l
, L. Q6 O/ J5 x; _9 |$ c3 P+ K# H J+ d) r: a/ f9 A7 h+ U, z
7 v$ L z2 S6 ]
2 K @+ d) D J* J0 {. s" T9 k& }$ I, ]9 L" D( ?, U
- Z5 T: x: e. A8 q C- I
2 v' b3 n$ Z. m2 _$ z* F9 p/ f3 J
|