|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 2 b2 E2 u% a+ O6 A6 j* C
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
L9 j& U# X$ H/ t0 k3 ?1 u# wNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
6 L$ S1 s1 r0 Z# n* S' J# x/ n8 P- <script src="https://unpkg.com/vue/dist/vue.js"></script>/ Z* c c% ?9 c( b) @
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> K0 i' l; } [$ {: t3 o A7 C8 M6 n6 ^7 k
-
, d2 [! o- M0 c- d7 C/ ] - <div id="app">- w: u! K1 _4 ]1 h
- <h1>Hello App!</h1>6 F, @9 R A! D: U+ ^: j2 H- a
- <p>5 S- G) ~4 A" r) N: f
- <!-- 使用 router-link 组件来导航. -->: U$ }7 I# ?! \5 J. a
- <!-- 通过传入 `to` 属性指定链接. -->
) {5 Y6 \$ i% |+ Z - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
: B$ p: m, L/ A6 k/ T3 r: n- o - <router-link to="/foo">Go to Foo</router-link>
! o+ r, n1 w3 \" x: x3 { - <router-link to="/bar">Go to Bar</router-link>$ g7 w a% ?9 L( L
- </p>/ y# a, {4 x; D! Y) q2 k# G
- <!-- 路由出口 -->" J4 f% M& p. @ ^% C& J0 {$ N
- <!-- 路由匹配到的组件将渲染在这里 -->( f* T- L7 ~' W5 V% l( J" [, \/ o/ `
- <router-view></router-view>( ~0 P S& F9 }; G( b) f
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter) R( T: Q$ ^' n$ P
- 8 c% ?3 X# V: i; l
- // 1. 定义(路由)组件。
- L/ N; N* r9 P - // 可以从其他文件 import 进来2 J! R: X, C' ~+ |. k& [6 [/ @0 `
- const Foo = { template: '<div>foo</div>' }8 X! {: z5 J" m# Y
- const Bar = { template: '<div>bar</div>' }5 D) ~& ?/ S2 O! w! y
- . C6 O2 U" t" h* F) z, v
- // 2. 定义路由' \1 f4 X5 u, N- J5 K% k
- // 每个路由应该映射一个组件。 其中"component" 可以是9 h1 S1 {8 U( K" Q* x6 k
- // 通过 Vue.extend() 创建的组件构造器,
. o, z1 v c! g+ V! ]/ j - // 或者,只是一个组件配置对象。
# j8 f4 J/ U" W9 t' v - // 我们晚点再讨论嵌套路由。
% W0 Z% W5 u* _4 i3 h - const routes = [8 O. B5 l0 k8 M9 y
- { path: '/foo', component: Foo },
$ h, p X, H i& V g - { path: '/bar', component: Bar }/ {) p$ _2 z; v" a: p1 U
- ]
5 `( N* r- [7 p2 ]" _* H1 ] - / W5 U1 D) M! _9 [2 G4 E6 H
- // 3. 创建 router 实例,然后传 `routes` 配置
3 A I1 [& Y5 c9 F# W) T - // 你还可以传别的配置参数, 不过先这么简单着吧。
L9 x4 T+ _5 d0 @' | - const router = new VueRouter({
$ T4 `3 a9 d- N7 l2 B' M" j - routes // (缩写)相当于 routes: routes
p @) |) ?( B8 x/ ^ - })/ o! n# x0 w8 V0 N+ {; n/ z
-
) q, Z4 I8 j% ?3 T# f+ q - // 4. 创建和挂载根实例。
0 k% U! {) W+ O& ~ - // 记得要通过 router 配置参数注入路由,
3 ]$ L. D+ b% V! k/ _% w; q' a - // 从而让整个应用都有路由功能
& U9 f4 s- x* y, l$ Q b; k2 ]" x - const app = new Vue({ Y7 F& z, y; R9 r
- router2 w& I. U2 B: R& v' P! g e. U. d
- }).$mount('#app')
8 r4 f7 ]# _9 d, ` - " Q! u( K5 G" S ]: w. e
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 ( h8 R; C" n' t2 a/ ~
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
, a/ Y, g# H! S% N4 I7 j: A - cnpm install w* C0 x/ L! z4 ^* B
- * k$ }' ^, G0 u) V3 ~
- # 启动应用,地址为 localhost:8080
0 a$ `5 h/ _! ~% z/ u7 X: d - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
7 v- x- c4 K% r7 j+ c
& j) y7 [+ C% j3 k2 S9 k4 r9 R- S; I% l1 O' D
1 ]6 a! h" O+ \/ c
B# u8 O+ n3 V; G3 K: P5 o6 c l( [, x) S
8 k" Z3 S- e9 l9 a7 U' H w
2 X) D8 J( i! W1 {
$ g- I1 c6 d6 D% Z. q4 ?0 ~" t% D/ U6 O3 m# g( U
% L/ y5 L/ c7 N' w' z1 T" f' D9 t. f8 F8 [% q b7 [/ H
|