本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
, k# v3 R2 X/ P游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
3 a1 z' [, K' m2 ^. ]/ n1 wNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码1 b1 P! U3 s, H3 `' q
- <script src="https://unpkg.com/vue/dist/vue.js"></script>6 E7 \: ~7 ^) Y
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>) Y4 K; G/ T# R$ Z) q
-
5 n `6 J5 r2 [* n - <div id="app">; Y% ^0 Q& u; D
- <h1>Hello App!</h1>4 b. Y e% h# O0 q2 z* C
- <p>: k& p8 [- k) P% v# a
- <!-- 使用 router-link 组件来导航. -->
- i/ k) K* c, b% Q6 [ - <!-- 通过传入 `to` 属性指定链接. -->
( {& j8 ~2 ]+ I/ O. Q# T - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->4 Q, L6 H: y1 ], i9 c! A
- <router-link to="/foo">Go to Foo</router-link>
. d8 `+ ^6 d- l- \ - <router-link to="/bar">Go to Bar</router-link>
" c. Y1 a( d- ~- X+ l+ Y8 Q A- A& j - </p>
3 F" }" J4 }7 o - <!-- 路由出口 -->, x0 A/ B. x/ Z" X" M
- <!-- 路由匹配到的组件将渲染在这里 -->
+ K! [. \# k- f: P$ T; `1 t& L - <router-view></router-view>7 i% E, j# F9 f
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
- z% \6 ]8 ?8 ]& i -
) \3 M/ B/ V2 z8 Z# c - // 1. 定义(路由)组件。1 ~8 ]- b: \# ~9 F5 i
- // 可以从其他文件 import 进来* G# N. f; g8 S) G( D0 X. ?# L
- const Foo = { template: '<div>foo</div>' }9 Z$ f f3 s$ r
- const Bar = { template: '<div>bar</div>' }& Q3 w. `- k& V v1 w! g
- 7 x: I( v9 x: }/ B+ v9 \$ q
- // 2. 定义路由) e9 L8 |- M7 t
- // 每个路由应该映射一个组件。 其中"component" 可以是
8 r+ q( W; K0 \ - // 通过 Vue.extend() 创建的组件构造器,+ U7 K4 k* u, S+ T
- // 或者,只是一个组件配置对象。
& F: @4 s2 }% _3 c6 Y* i& T/ h - // 我们晚点再讨论嵌套路由。% m9 r& ? g$ R) r9 n! S
- const routes = [
9 V, O: w& y; Q - { path: '/foo', component: Foo },
6 R8 D6 s" J2 H+ ]5 n K. S$ T - { path: '/bar', component: Bar }) P& V" I) }9 o* i/ _. b! g
- ]
4 k3 A$ }# ]1 x3 q2 ]( K -
3 s3 s: _2 e/ C% t6 Z, A' m0 q - // 3. 创建 router 实例,然后传 `routes` 配置0 P/ P3 I7 [! c' f( ]4 M* o
- // 你还可以传别的配置参数, 不过先这么简单着吧。
% U! d2 O1 s3 n# c& J V1 k - const router = new VueRouter({; ]/ B4 R& i7 I8 r4 ^" {; W
- routes // (缩写)相当于 routes: routes
/ S1 [9 h/ k# ? - })( W0 p0 S$ A- j# z; `! A
- : E8 ^7 x8 S' k, k9 s
- // 4. 创建和挂载根实例。
2 D+ M% q- ?+ L! A - // 记得要通过 router 配置参数注入路由, S$ p5 `* T* q, V7 o! C3 E
- // 从而让整个应用都有路由功能
; U" n' W1 p. p$ ?7 s" s. | - const app = new Vue({4 R3 D+ _' O+ Y) k. T$ C
- router8 ^' s: \* e+ p2 h, U; ^& p
- }).$mount('#app')* X y. T, |$ D" _8 z; [
- @3 j- _0 b" P) }
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
& C+ O: s, h8 X+ B) w3 M( \; `7 j下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
V" z* W' H1 L7 V& { - cnpm install7 M* j5 A- W4 C' W4 V% I# B
- 6 E* ]8 r9 }) E. J! P: q. B( e
- # 启动应用,地址为 localhost:8080
N* t# Q/ k1 D. Y6 w - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
2 M8 f8 W- W _3 D% F# t# z+ p% k1 N$ B# R4 W
4 r* f! _. c& g- I6 _& O
5 [/ o* G/ ^+ @& X! S
% u! w3 Q: |+ X+ t
7 p4 o: r0 b1 ~ E6 _0 z! b; L. \& c) \
7 ]! l* H: Y: X. l5 K4 U$ z1 P0 R6 t) ~' e) v
: ^, W* q+ _+ @# {; C& ^" P) n% x" k p7 U
1 V+ w8 @& K4 `. c r6 I0 b |