本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 ! |, ~% @* T8 w! p1 O2 K
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
' {1 f: c* i0 d% ^, iNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码" ]& |6 s6 }* x5 h! T& W
- <script src="https://unpkg.com/vue/dist/vue.js"></script>
+ W$ ~4 k4 E2 n W- }5 T3 E2 A - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>1 T. ^$ o) v" d4 x! K
- 1 W) ]" x/ j* j
- <div id="app">
D" E+ J) c4 K; Q - <h1>Hello App!</h1>
" F+ y2 R' b. ~# ?, p+ [7 M* { - <p>
% r$ H: f1 |- j' E- A6 X; B' I" Y1 z - <!-- 使用 router-link 组件来导航. -->
k. G# `( F( Z9 U Q3 v! G+ P - <!-- 通过传入 `to` 属性指定链接. --># g0 l0 N$ c: z1 m' Y
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->, {' J$ }1 v' B* ~ F% g! Y) ~
- <router-link to="/foo">Go to Foo</router-link>
7 e+ m) `7 ^- H5 _8 V - <router-link to="/bar">Go to Bar</router-link>' b, Z8 _ ]& C9 r9 m
- </p>
9 |7 ~( [4 h1 ]5 D3 @! q4 p - <!-- 路由出口 -->: _7 F+ N0 K: ?3 k
- <!-- 路由匹配到的组件将渲染在这里 -->% m% R+ X& u" v& Q: H: ^" z, I
- <router-view></router-view>
/ `: m4 U" F: t( O2 |7 b - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
1 c9 u5 K* y' p& ]& ~% G! `9 i) w9 S - / o7 E2 _ a3 F. v% Y
- // 1. 定义(路由)组件。
0 c4 N, i" m g9 J9 O" W - // 可以从其他文件 import 进来
3 D% f5 v% _* u, x1 c. r - const Foo = { template: '<div>foo</div>' }
3 O1 O5 t" Y9 E+ n/ T - const Bar = { template: '<div>bar</div>' }' ^& \) H4 @* d8 ~" c0 ?4 H; D0 k
-
2 v' K1 X' Q5 G0 V4 p( O - // 2. 定义路由
: P! i" Q% A( \% `. S. B - // 每个路由应该映射一个组件。 其中"component" 可以是
# l1 }* a; O u9 P5 @/ N - // 通过 Vue.extend() 创建的组件构造器,+ K) L" X' {$ b0 l$ q* k' ^" m4 Z6 n
- // 或者,只是一个组件配置对象。# P1 `- U; d0 z4 ^& c
- // 我们晚点再讨论嵌套路由。# ^+ s# ^! |3 Y( l
- const routes = [
% {9 [) J6 D1 Q& V/ w - { path: '/foo', component: Foo },
+ w8 W+ P+ g$ E% N1 q - { path: '/bar', component: Bar }( h/ p) |. `# J9 Z
- ]
% P1 J, F* ]$ W$ g: F - 4 ]& s; g+ I; G" ^! T" | {+ V
- // 3. 创建 router 实例,然后传 `routes` 配置
- s4 v9 A. w3 h/ K - // 你还可以传别的配置参数, 不过先这么简单着吧。
4 \- q% t9 ~" P4 W: N! w5 m - const router = new VueRouter({5 q- K; \, e9 T1 V9 b. t5 ~% x
- routes // (缩写)相当于 routes: routes5 ~5 v& p: P- W
- })
$ K* ], v9 K% M0 o5 I -
8 O% I- Z8 ?4 l5 h, p9 u - // 4. 创建和挂载根实例。0 O9 B. u3 G6 C& W/ C* C
- // 记得要通过 router 配置参数注入路由,
4 r8 n* V6 P8 }" n g: }% w - // 从而让整个应用都有路由功能
# Q/ X/ Z6 L1 P5 e% Y; [. h - const app = new Vue({; p& T _! X6 V B/ O9 ^) p* P
- router
! b8 s$ \, P: h: }" J( ]) n* u - }).$mount('#app')& N0 y$ b! l% O6 d8 X
-
- f0 d0 j. K N0 K1 I - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 % X- b. }3 y9 W. L
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm; j" X7 E9 ~7 W
- cnpm install2 t# v w) E7 r7 K8 {3 l7 A3 U7 l
& O9 a% a7 P! r% m2 s, J3 L- # 启动应用,地址为 localhost:8080: r8 |& m R3 x3 `+ i: R
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
/ S2 j( }# ^& |0 x/ p
6 z6 {1 f" ^0 I3 h( v/ ]# Y2 T R
' P' Z* L6 k& U! ?- e
* H1 @& }2 U5 k8 I, C1 R
2 F2 L( {' a* `" l# y! @: b
# ]+ n3 i7 P5 i" |' f6 t' s$ A3 ^* o( U' |% q
B8 R9 w+ \7 t4 c3 c
Y3 m* d! ]: x) m
7 S) y ?2 b3 q( w- D( o2 N/ }
- C* J' {* X. K/ ?! F9 i. P& [- r
* M& v/ ]4 j; D" ` |