|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
. F# e( A' `8 j- V& [! S游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 6 Q. D, l% I* V. t
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码- \2 o( ?+ {' y: E- Y$ C
- <script src="https://unpkg.com/vue/dist/vue.js"></script>6 t% ~- a4 q/ d, C/ ?
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>* E3 O1 `- a% E- X& ^
-
3 T$ O& W% c4 u3 ]! K, I7 m - <div id="app">1 D+ E9 Y& M3 B5 [& F* ^
- <h1>Hello App!</h1>
" |3 j% i& l6 o. U, K3 H* o. h' B - <p>3 }7 R% y# s: w5 x% P2 p
- <!-- 使用 router-link 组件来导航. -->
5 D7 O! X5 I0 A3 ] - <!-- 通过传入 `to` 属性指定链接. -->
4 s; r! E% @: d4 ` - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
! D8 |5 _" m3 Z! U8 c, Q' n - <router-link to="/foo">Go to Foo</router-link>
" L# G0 V; g0 p! q - <router-link to="/bar">Go to Bar</router-link>
h. h) A6 f- G/ T2 e - </p>* | X g3 P) {- V1 |% j% t }- B
- <!-- 路由出口 -->
4 F9 ~; }) `6 \+ e' G - <!-- 路由匹配到的组件将渲染在这里 -->' t" U/ Z+ J6 m9 C# D5 z9 A
- <router-view></router-view>
; V Y9 D: n/ X+ Y2 Z7 [ - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)- A2 z$ b# N9 g+ T+ n& _, X# j/ f
-
5 d( Z% h' `) I4 _: w8 \, [3 U - // 1. 定义(路由)组件。
2 F; n$ y: Q* E- e9 F - // 可以从其他文件 import 进来4 d7 ~5 y$ b/ L. Y: B
- const Foo = { template: '<div>foo</div>' }2 r/ M" { f; Y; t1 D/ ?: w
- const Bar = { template: '<div>bar</div>' }
, d& J- d- m- _; Y; v9 v6 [ -
& s, Y- J- `! o! l* D. C3 z, g - // 2. 定义路由4 g$ ] u& u) g6 k! I, G0 s
- // 每个路由应该映射一个组件。 其中"component" 可以是9 M% J" E& C! l# |1 i! t$ S) F" o
- // 通过 Vue.extend() 创建的组件构造器,
- }9 b5 Z- L( m7 n - // 或者,只是一个组件配置对象。
z0 Y5 R! x( w0 a& [3 a - // 我们晚点再讨论嵌套路由。
$ p7 \' C9 y$ f/ J - const routes = [
# a' z! {( b' a. H# U# j - { path: '/foo', component: Foo },
4 r7 t+ Q7 M) F' q - { path: '/bar', component: Bar }
- z4 o* p# |$ s* u - ]
8 O( W+ b D4 j5 q; y5 R - 2 J1 C% u/ P/ r. K4 J
- // 3. 创建 router 实例,然后传 `routes` 配置 }8 { M2 Q9 N4 L' ^, K% V9 R
- // 你还可以传别的配置参数, 不过先这么简单着吧。5 c$ a2 [9 L4 F* G. C J8 {
- const router = new VueRouter({6 ^, V% C2 v" v' J* N0 F$ n5 n
- routes // (缩写)相当于 routes: routes
' D" y# x9 i' ^1 S. f - })* ]9 M6 T+ B. [5 o. t$ d% H, w
-
2 ^( s7 J j) _- Y5 j( \# X) A - // 4. 创建和挂载根实例。
; ^; L4 H+ u8 O - // 记得要通过 router 配置参数注入路由,5 } o% u+ [+ p; c- d. \) _' Y2 V
- // 从而让整个应用都有路由功能
- i' A, R Q0 Y; f5 l8 D; b8 U T - const app = new Vue({
' m& B* s' s* N. @# N" X - router) x9 g) r. I! e- a! u; ~! ]( a
- }).$mount('#app')
$ J0 Z. b1 p8 z# i% N - 0 d% c9 Q) Y- s; v
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 ' y! W) q7 c3 v' T! T
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm ?" ]# ]: q- ^8 v" U
- cnpm install
t+ ?5 f* n; x5 `( e- Z- k& C - : ~' e0 D! W$ P- r) F
- # 启动应用,地址为 localhost:8080
) F. W# O. V. J9 s, |+ F- P - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:5 b4 z7 m+ J! z2 n; ?
* b. [3 ?& s6 c
; ^5 N6 f: ~1 S& V1 e9 Q; l% \7 J3 C7 G! Y
* c0 M+ v+ S( l) v0 t/ g z% t; k& |' I2 h3 Q
/ s3 d' Y; R! Q4 r% i" d
0 R; c. k- Z- S
6 E i! ]4 y$ }& D/ U
7 _' {8 E4 X2 c h+ l4 Q, @
$ a" V$ O( a5 |0 q* k+ Y [/ e! D) }# h( P; N6 p5 E+ y3 f [
|