本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
0 H& p# C4 }3 N: }游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 1 u, t' l( R8 V9 Z# a& ~
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
" I L% b% K5 |. n% ~, H- <script src="https://unpkg.com/vue/dist/vue.js"></script>$ V2 p" v3 T6 F
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
" ^. W3 E3 ]4 h, o$ A - ( H+ f1 a2 B2 s( V, ~- p+ }
- <div id="app">
+ z4 D% t/ t9 O- @ - <h1>Hello App!</h1>1 f8 R7 v* g4 f
- <p>
( W4 @$ m: `% f* g/ @ - <!-- 使用 router-link 组件来导航. -->
1 @( R4 X7 Z& }' d) @ - <!-- 通过传入 `to` 属性指定链接. -->
4 G% R. v. i: O3 K/ s - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->/ i7 i! j6 z5 @5 |# N1 Y
- <router-link to="/foo">Go to Foo</router-link>
: Z% ^- G4 R$ O: I; X0 {8 t - <router-link to="/bar">Go to Bar</router-link>
5 Y7 T9 }( y* n" s, _6 I4 e - </p>8 m# o& Y# t# ?" [% ?5 J
- <!-- 路由出口 -->
* D$ f) K% H* y! Z8 C - <!-- 路由匹配到的组件将渲染在这里 -->. f$ x- E8 g J% \8 V
- <router-view></router-view>
9 c* d; d$ x7 w& A0 N1 g - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
' ?4 R3 z/ L" w3 \, V2 y7 z - . h: D$ t7 }0 d( v
- // 1. 定义(路由)组件。
3 Q0 G+ t% N+ J3 J - // 可以从其他文件 import 进来
* L' w l l" w$ k - const Foo = { template: '<div>foo</div>' }7 U5 t: D* m! n
- const Bar = { template: '<div>bar</div>' }4 b) Y. s- ?: Q6 m/ Y3 B( Y: k) I
-
& [: o F0 p# ~1 t' ^* } B! k0 X - // 2. 定义路由
9 D$ ^: x! t2 N8 F - // 每个路由应该映射一个组件。 其中"component" 可以是+ ^" \0 r( G' _% c6 _; X9 K( s& T
- // 通过 Vue.extend() 创建的组件构造器," I p) E" ?* h" t
- // 或者,只是一个组件配置对象。
; o2 w$ Q ]0 z% M _2 [3 x - // 我们晚点再讨论嵌套路由。% I- s7 U2 E+ \8 ~0 g
- const routes = [& b7 v( W1 H1 G) r0 j) x
- { path: '/foo', component: Foo }, q2 t) D! O6 P
- { path: '/bar', component: Bar }
: g2 n# u1 n* D% B5 U# X - ]
' U. X" L- x9 N: x0 i6 S - & k, U T D3 u
- // 3. 创建 router 实例,然后传 `routes` 配置
9 G- i5 e. u6 z. j0 ?7 v5 @ - // 你还可以传别的配置参数, 不过先这么简单着吧。
! D6 w* [% E7 U9 a - const router = new VueRouter({
/ \6 a$ P0 ~, e( O, j% o# | k - routes // (缩写)相当于 routes: routes0 V) q) ~+ `; m* j4 C
- })# m2 t7 F0 }; Q" ^* ]
- & g1 l3 G) w: F" }8 ^4 C: s, X+ c
- // 4. 创建和挂载根实例。
. a# q* P+ ~& o6 Y( A t4 ` - // 记得要通过 router 配置参数注入路由,
: B1 ^3 X2 ?4 u7 ]" `! V0 O4 ~9 _ - // 从而让整个应用都有路由功能
( A# [6 s, A, c% p! K - const app = new Vue({
1 \. f" p) K) z \ - router
* o0 `% G/ M# x# C" }6 V - }).$mount('#app')( e) p# J; D5 i! F; ?1 j- l3 g7 m8 ?
-
; W# [( q# e% ^) @1 z$ H2 Z - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 3 Z% L, D+ D5 Z9 U
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
! Z- @. c" a6 w; r - cnpm install$ O! ?* P- \2 o( X6 V X K
4 s* _9 N& S' V n$ |- # 启动应用,地址为 localhost:8080
6 \0 p4 Q, a% v7 Y - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:' v0 {/ h1 U$ J: E' V& [6 U w
: F+ l) p% t( c1 c- j" h$ Y7 C, ?) y2 \# F8 {( `0 w
/ g3 ~6 L& @3 `8 ~+ f! N% a
0 V: n4 l- c* j
( [3 H) y: v, G8 v9 J; f
; |6 M c8 R. g8 v- p( v
! b1 F6 V$ b& g! i9 q1 o9 D/ {
- T4 }; g( y; z% @ l
; }. V) Z% B% w% l! C0 }3 v5 ?( k0 G
+ L5 |3 |, K3 Q! \- T+ N T
|