|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
; r# o* X, K/ h3 ]* M) P游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 8 E/ d! H5 t% @6 |: H
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码* r. S! C6 ^' B0 X5 U b3 X
- <script src="https://unpkg.com/vue/dist/vue.js"></script>
6 G5 E& C ^' U) I - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
6 W6 @* |3 M6 ?9 C! S2 @, U$ A W - 9 t9 B$ p7 w1 ?5 w6 e8 F. ]; V4 C
- <div id="app"># u J, i b7 H6 W
- <h1>Hello App!</h1>* i% m; h' M; b/ ]8 e' h
- <p>
}$ y0 S: m; P7 t/ T7 Q4 \ - <!-- 使用 router-link 组件来导航. -->
3 _# b; t. y' N8 h0 D6 ^7 ` - <!-- 通过传入 `to` 属性指定链接. -->' i, u" f4 b: ~# v; ?
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
$ C- M' n J: v2 O' U - <router-link to="/foo">Go to Foo</router-link>
! P# f, _$ [8 I - <router-link to="/bar">Go to Bar</router-link>
" q* _ x' s( y8 [: P$ h - </p>
0 `' A* W: k ?0 ~3 K: I - <!-- 路由出口 -->
" R3 F$ Q m- i) a+ p. i! u - <!-- 路由匹配到的组件将渲染在这里 --># ]5 @1 R( u3 v, u. k; H
- <router-view></router-view>, c: y3 M( j( L q7 a. u* i. d
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
- ^, \4 a1 A/ M7 X7 y -
5 F o( d7 f- r" y - // 1. 定义(路由)组件。, o0 _* O y3 d u: r0 h0 f
- // 可以从其他文件 import 进来' K: M* Q* o/ I' b
- const Foo = { template: '<div>foo</div>' }
- F8 y" v) z8 h9 S - const Bar = { template: '<div>bar</div>' } |# Y% D, S( q% ?5 e) E. y
-
3 k) I `9 R, K+ {( |% P7 { - // 2. 定义路由3 e7 o5 W* q3 f, x
- // 每个路由应该映射一个组件。 其中"component" 可以是
! i0 U( Q H9 }! r* U0 x, p - // 通过 Vue.extend() 创建的组件构造器,$ i' a. L4 r5 I3 O+ m! n( N+ p
- // 或者,只是一个组件配置对象。/ r/ U& q- x* \ W
- // 我们晚点再讨论嵌套路由。
; @% g- p# W8 d2 { - const routes = [
% w7 s% W$ f/ ~6 K" a$ z - { path: '/foo', component: Foo }, v, _# E1 p6 x: c* Z- r
- { path: '/bar', component: Bar }
" E! N% c% o' k l - ]
3 E( F0 v& s) C4 M5 c& ^5 y: _* r; q -
|1 t6 {2 v V, L - // 3. 创建 router 实例,然后传 `routes` 配置# R1 A0 r8 B# D4 Q) R3 b( Y6 n" ~
- // 你还可以传别的配置参数, 不过先这么简单着吧。8 g2 h( W) t* U! p. z9 u: Y4 E
- const router = new VueRouter({2 {6 [* [9 s& n3 B
- routes // (缩写)相当于 routes: routes
0 [1 T: O' P" b% p! l# W$ i5 b - })
) a' m: m0 A' j8 i5 A; } - ; I6 g6 M7 o0 v4 I! S
- // 4. 创建和挂载根实例。% E0 N- N% r9 g
- // 记得要通过 router 配置参数注入路由,$ u" j4 b& }+ W7 h' J
- // 从而让整个应用都有路由功能
& \% l9 D, N8 i6 S' |: A - const app = new Vue({
" m6 ~8 g# T. ^" ?8 p; e4 A) D - router
y/ l1 s2 o: ]8 W4 K+ Q - }).$mount('#app')+ T! v+ X# \4 ?8 n
- & Y; F, @" `0 e' y
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
. b1 ^4 J$ n! M, C+ f下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
! e8 a5 V5 i* A) E - cnpm install
- P) G# K& Q2 o: h& ` N
0 g4 D( B/ e7 [* x: m- # 启动应用,地址为 localhost:8080
( d. t, a- V. f" Y! N, r - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:! k6 k) |6 _. b' b- V3 u: Z
L+ q; ^; {/ ^! [: [# A; p
8 R+ ^+ I9 Q% e/ p7 Y8 B, k& O
; X. _" |, \3 J4 \5 q' d4 n9 r7 _1 z. ?! m4 b1 u
( k% M, R I3 {% X$ @: y4 g: s8 P6 d3 r
. o' R$ [$ \& e7 T' a4 i, i$ k/ R9 t. ~! |9 _. F1 _# o, G$ j
8 k" B* @( {( G3 Z# W U
) o; x/ C1 ~; n8 }9 R4 ^
+ ~8 k/ U L8 V1 z' x7 g4 N' |6 M |