|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 6 ]: C- t- P; i9 {
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
9 j$ p/ w/ V' @* HNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
U- I9 M0 B( z- <script src="https://unpkg.com/vue/dist/vue.js"></script>
5 L3 J- K/ O. \" ^+ K - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
5 |. G4 d9 [, I: ]7 d7 m - 3 c* w% R1 I; ~/ I( Y4 q- _
- <div id="app">
9 A2 n8 {* F9 Q/ \& P: o/ Z" { - <h1>Hello App!</h1>
- |1 t3 }! W5 `0 @& T# ?' a - <p>
8 e( O: Y. W1 I - <!-- 使用 router-link 组件来导航. -->+ v8 t: l/ W+ F+ G5 D1 Y
- <!-- 通过传入 `to` 属性指定链接. -->% h) ]. y s/ l9 g, }- P7 `1 S/ ~9 m
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
$ W9 J4 A! }/ z% y6 x3 X2 l - <router-link to="/foo">Go to Foo</router-link>2 N: I8 S o- W) c# Y" C
- <router-link to="/bar">Go to Bar</router-link>8 _0 V; P, X" h$ g! E: p! H4 F
- </p>
9 M: X1 g3 R' @2 ]% U- F1 ^1 D/ E - <!-- 路由出口 -->
8 |1 ]4 Q3 `7 x - <!-- 路由匹配到的组件将渲染在这里 -->; `( [# X6 t& t6 w
- <router-view></router-view>3 g$ r+ z' k& C3 S( C6 R
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
3 T- J6 ~. w7 |7 V -
* v' |) Y M& s" ^( l - // 1. 定义(路由)组件。
' ]# e6 o4 q2 U4 D1 K - // 可以从其他文件 import 进来
3 e e0 D+ y1 d# m a$ ]. K3 L - const Foo = { template: '<div>foo</div>' }
: n" f! j2 Z% J6 ]1 ~- W7 a( L - const Bar = { template: '<div>bar</div>' }
# u$ Y+ W" s8 F" f1 h" |$ E - & Q. y( x r7 }; M0 C6 a
- // 2. 定义路由
( m4 d9 }* p- @- i - // 每个路由应该映射一个组件。 其中"component" 可以是
1 P6 n: z% o9 O% a6 s - // 通过 Vue.extend() 创建的组件构造器,
- {7 K- N5 L3 s, \$ }1 D1 g - // 或者,只是一个组件配置对象。
8 O) m& x! T p# q" B3 J+ P# z2 i- L - // 我们晚点再讨论嵌套路由。
9 V. Y9 r H# g$ e1 g - const routes = [
( [2 R3 u' U2 S/ _6 [% ] - { path: '/foo', component: Foo },
% `) Y% R& H5 M C5 _ - { path: '/bar', component: Bar }) o* f) \) V& w
- ]
8 P R9 k+ K. I0 Z -
. T9 J+ N' x* M - // 3. 创建 router 实例,然后传 `routes` 配置. a1 F* v! i8 @# M% c
- // 你还可以传别的配置参数, 不过先这么简单着吧。
! y7 A9 C% }% J! \! v - const router = new VueRouter({4 U' ?; I* M$ z7 N; S
- routes // (缩写)相当于 routes: routes
6 j+ Q( p" L! u6 K8 n$ @ - })' w" }' ]% l9 d7 |
- 7 {0 v3 G7 S- l
- // 4. 创建和挂载根实例。
" q- o' `0 [) I% U - // 记得要通过 router 配置参数注入路由,
& w+ [$ s9 ]' y% D5 A+ v3 x" V - // 从而让整个应用都有路由功能
1 _- H. F1 k9 Q# ] - const app = new Vue({1 ]# |3 A" E* b
- router7 F0 x+ O4 P1 @
- }).$mount('#app')
. \" L1 Q2 P+ K% W -
$ v8 W( e/ G: Z- q1 {3 d4 R- p# e - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 ' q% l& M4 q0 Q9 `( r
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
- n' O: ~2 ^$ s' @. A0 p - cnpm install
; o& u6 S9 x) o, w; @ - / @( T( m5 w. \9 T. a0 D0 V/ b
- # 启动应用,地址为 localhost:80804 E) ^" g4 @/ U2 u' x
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
T- n7 {& I! s& \1 G) c3 q
3 u' r7 c0 t* M0 Z" O1 }' d+ ^+ C/ t! m. ~; u. \4 V% j) e6 f
* Z# r) {& L& b* g. \: \* K# j* n/ a. A# c$ z4 l
$ L5 B" K- ~ ~7 A$ N+ y( k
5 _2 S S, z3 J+ T$ F# |5 P
, O" q: E1 S, Y& w
2 @ |" k7 g0 C+ ^: ~" {3 K9 s i8 z9 x9 c. R( _
+ Y. R' n. a' @
0 P: y3 L/ H7 r) F, S
|