|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
' H; w4 I5 O9 `8 g, F游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
) @! t' f& A( ^NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
0 G& D& U {( y' l6 J- <script src="https://unpkg.com/vue/dist/vue.js"></script>
/ ~: ?; N$ ? q' w! g/ U - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>/ I& T& l6 w( {1 K6 W$ ]
- 2 G1 c2 W/ H+ g9 n/ h
- <div id="app">7 Z+ ~0 K" y/ ]7 \4 J. {
- <h1>Hello App!</h1>
% {, v5 M$ ~; k; F/ ~. I" r - <p>
3 {& d8 J0 h0 e9 K) Z! U5 Q - <!-- 使用 router-link 组件来导航. -->
# d8 ^6 t( v5 v! w8 q0 t8 r - <!-- 通过传入 `to` 属性指定链接. -->
4 r" G6 ]. L5 @: L - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
( D" ?8 u# m: e$ t - <router-link to="/foo">Go to Foo</router-link>
! a& D3 X9 V5 Q% c* G" ~ - <router-link to="/bar">Go to Bar</router-link>+ V8 D( A8 \+ g3 G1 k
- </p>7 c$ Y6 r# y H* ^+ n! U4 D7 ]
- <!-- 路由出口 -->
6 `; U( @, ~8 T2 f9 i: k' ` - <!-- 路由匹配到的组件将渲染在这里 -->0 |1 r+ @$ y+ t1 w3 d+ x# E1 e. s
- <router-view></router-view>
9 y/ t7 O( l# c& H/ L - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
; c: v; R+ M2 T. P+ l -
9 w" [9 G, Z+ k/ \/ Q - // 1. 定义(路由)组件。
) V# P+ u4 @# l3 }; O - // 可以从其他文件 import 进来1 g4 |0 p2 J, Y3 J; g) _
- const Foo = { template: '<div>foo</div>' }. J7 N$ F9 K4 E7 j0 F' s' M
- const Bar = { template: '<div>bar</div>' }% |9 W! X7 o" h5 T" u5 z4 w6 r
- ' k3 Y. e7 k2 C: h
- // 2. 定义路由0 p! r v- K7 _; c
- // 每个路由应该映射一个组件。 其中"component" 可以是
, ~7 a, e: ]6 }9 m: k - // 通过 Vue.extend() 创建的组件构造器,1 x: D% S* y$ p2 s; `9 |. q
- // 或者,只是一个组件配置对象。8 M3 z9 b( x5 ^
- // 我们晚点再讨论嵌套路由。9 m5 J$ ^3 ` m4 V, h8 m
- const routes = [
; w/ G1 G( \2 V( Y/ F2 [* l0 _. c1 Q; t9 X - { path: '/foo', component: Foo },
0 S3 \. P3 S/ ^" j) ~* f m - { path: '/bar', component: Bar } E# B+ |2 D; z. r) o
- ]
; t3 V1 r$ m6 i' d5 A, Q+ ] -
! Y) M F9 W! c) u; f - // 3. 创建 router 实例,然后传 `routes` 配置
7 {+ z' f. @# M; C) r - // 你还可以传别的配置参数, 不过先这么简单着吧。
5 p( w# Y* P- m* v - const router = new VueRouter({
. a/ d1 a8 \ ~+ p8 R' R+ ] - routes // (缩写)相当于 routes: routes
: d2 i- o; ?; [ U; Z: `* [3 x - })
+ G! w6 W, k7 Z - 9 S& A% ~& o8 K1 v I! ^; u
- // 4. 创建和挂载根实例。9 M4 N+ ~6 ?; S1 ?% y. | k5 @4 a. ?
- // 记得要通过 router 配置参数注入路由," D. U4 ~9 ?+ D. w9 ~4 \3 E7 c% n
- // 从而让整个应用都有路由功能
, |( t' ]' M# U1 ~# C - const app = new Vue({
& R' p9 G* j$ J$ F0 K. V, N - router
' Q- P0 r2 p! b. Z% a - }).$mount('#app')
( |8 i/ w1 }- y2 [, L% u" M/ ^ -
( Q1 r0 ]2 D1 X3 @ H( L/ @ - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 : H! s$ ?& S, ?' c2 Z. c6 W2 m- B' C4 [1 x
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm% E2 {: r+ M$ s8 F, ^
- cnpm install) G6 I9 C9 v( S4 B( m! ?
1 T$ s! @# b/ _8 O$ q) @8 U$ P! L- # 启动应用,地址为 localhost:8080
( v& }, g: b4 O3 t - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:% j. u) q, w0 u
% W8 w: l9 w. ]2 R8 l+ I1 @1 j- C7 H+ s! l
) O: C9 M( }. V/ F% l- B$ Y# E
5 H \2 n ?: ~- P2 @9 Z% I; z
8 |& j' P8 f Y) y* A* I% f
; H" K3 N$ J" O) {: c% Y7 a8 ^1 i2 ^" `: e7 Q
& R, ~) J1 ]$ s2 Y; }
s+ ?! a4 X" Y- m" m, z$ p. m" S/ j
5 T7 i5 B# M0 n1 I5 Q) B
! n3 N# ]6 `) n2 y- w |