本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
. _$ ~& I5 d3 j0 S% w U( Y游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 - {- Y8 v- U6 W) T0 }9 O( d
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
$ p6 h- [0 o: i- o- <script src="https://unpkg.com/vue/dist/vue.js"></script>
3 Z6 L/ v7 O2 k1 n3 e1 v5 H - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
; _, w+ _" M: K7 F4 Y. E - & t) g7 U2 ?1 N$ D3 j
- <div id="app">5 _* Z0 |3 w$ M
- <h1>Hello App!</h1>, u* e% s0 G* I( u+ o) c6 F
- <p>5 ] v# O Q7 @
- <!-- 使用 router-link 组件来导航. -->
6 `' q P, B) [+ Y: e - <!-- 通过传入 `to` 属性指定链接. -->1 p+ t: I+ q$ m* S8 j; p# u0 Q
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
6 ~4 s! j+ ~$ l9 O - <router-link to="/foo">Go to Foo</router-link>- i% h# q( k9 N8 N* ? T
- <router-link to="/bar">Go to Bar</router-link>
+ M7 F6 ^# o& [5 }0 X- m0 X6 Q - </p>
- _* q; P; ^# @' ^0 S- ^: R8 [6 U - <!-- 路由出口 -->4 Y8 M/ q, Z; V. _3 g& n
- <!-- 路由匹配到的组件将渲染在这里 -->( ]- l" e& R3 k) s3 W6 ]7 L/ n: f
- <router-view></router-view>
; N/ R+ p7 Q$ W' i* A - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
8 a) P- I( z4 L% k. n - # }' c: l2 Q: _0 L" |$ I/ d) j4 ]) u
- // 1. 定义(路由)组件。8 Q( w2 m8 T4 V( |1 B2 H: a6 }/ `
- // 可以从其他文件 import 进来, w* P+ L& N; R* r2 U; K
- const Foo = { template: '<div>foo</div>' }9 }3 Q1 s* r' s: e
- const Bar = { template: '<div>bar</div>' }
$ W) V& b* R. |1 `5 g - 4 R: B. S2 ~: B5 @# [' Y) H
- // 2. 定义路由
7 J6 K) @7 C: } - // 每个路由应该映射一个组件。 其中"component" 可以是
! m( U/ ]3 _" v* f - // 通过 Vue.extend() 创建的组件构造器,
9 r; f0 \! l5 x - // 或者,只是一个组件配置对象。2 o- n- j# r4 U; j O
- // 我们晚点再讨论嵌套路由。' O+ d* z+ o, j# r( Q: [: o1 m
- const routes = [0 G) x* F8 |- w0 N+ C# I5 j5 s( D
- { path: '/foo', component: Foo },$ R3 D* C2 i& l7 r4 B4 C9 D6 U
- { path: '/bar', component: Bar }- M" B. n2 X4 n) k, R# P& j8 Q7 y) h
- ]
8 A D* P# l. D! t2 p- B - ; D5 _4 s7 {% `' S: x& i
- // 3. 创建 router 实例,然后传 `routes` 配置$ K" ^1 @: ?" B7 L( r: D
- // 你还可以传别的配置参数, 不过先这么简单着吧。
' }% N1 X0 ~/ y6 V6 B, a% M/ t - const router = new VueRouter({$ b. d. n. k; D3 @
- routes // (缩写)相当于 routes: routes
0 z! |! u( W" i6 V5 \4 n8 m7 F9 S# s) ~ - }) G: f1 z- L4 E w6 H* Y1 y
- 6 y5 t: J, [: `$ }/ u
- // 4. 创建和挂载根实例。
; _( K6 q; B0 [# O - // 记得要通过 router 配置参数注入路由,
% ^+ d6 v& o I$ Y - // 从而让整个应用都有路由功能* ?" ~0 @5 a% q6 O$ A& e k
- const app = new Vue({9 Z6 ~' i' c1 X+ R" w
- router
. o' J# J9 ]* Z0 t3 }( @- |) N# Q5 [+ k - }).$mount('#app') ]$ m. T2 @% q% X8 u) E
-
8 u% g/ [2 Z! U' E0 R - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
& E/ p" X$ O5 K下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
' r9 z9 u1 h: p5 Q - cnpm install; Q& S* L; q6 Q# f7 v4 {
3 _5 Y: M8 u& K0 \5 M- # 启动应用,地址为 localhost:8080% A4 j7 S0 g, X6 `$ f+ N$ t! |
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
( ] O& V% x+ T4 x( \% {; A2 G1 `! M: n1 O% R$ G' j
$ S! U$ @) W1 b4 N
/ Z# M$ g( }8 l6 w b* s5 D, Q8 j( p; y& d
" M& j* m# ~3 n1 W
+ p5 h: O$ B# g, P) H. A! w w3 s: {" z% A7 {% b9 |
# K% P, c( k/ T- F- o; i
/ l& j8 S5 s* `. {# I
/ }7 [0 z |7 d+ h- G# ]8 W9 _
& Z. i9 R. G4 C- f0 J- h |