本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 8 ?5 a" _- Q' M* v0 W9 f
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
4 _4 K. H- N, x$ ^3 u7 u3 DNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
" m2 w- x: _% B5 t& l6 k+ U2 O- <script src="https://unpkg.com/vue/dist/vue.js"></script>
# L9 }# O8 r! m7 m( d1 ?9 Q( d - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
]7 t2 H9 h" w" P, W; o4 A! ~ -
( z5 \6 X& b I, k - <div id="app">! B- q$ P0 C3 H, d+ U
- <h1>Hello App!</h1>
( d! E6 A% ^( g* ^. p, D - <p>, h2 E% E8 s- |+ G
- <!-- 使用 router-link 组件来导航. --># K) n" \5 u. L# ^2 ]
- <!-- 通过传入 `to` 属性指定链接. --># R- W6 I# h- V g# p) B3 i8 q7 B
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->5 _' o R& l% C, I2 F
- <router-link to="/foo">Go to Foo</router-link>
8 n9 M. K( |! v - <router-link to="/bar">Go to Bar</router-link>. U+ _8 H2 U+ n3 c5 u; k- S$ ~
- </p>
" S% ~- r; c- b" }8 d; w - <!-- 路由出口 -->
' k" d0 u! d" M3 u1 M7 _ - <!-- 路由匹配到的组件将渲染在这里 --> u4 G! t' q& { L$ _
- <router-view></router-view>
9 f. g& c {3 U) `' M - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
2 T5 N0 A7 J& }3 l. G - 1 W t, z# ~7 t; D0 Q
- // 1. 定义(路由)组件。
/ e# w; [/ U4 f0 c9 `! H - // 可以从其他文件 import 进来# v* {& y1 _( J5 {4 G: e6 r1 P
- const Foo = { template: '<div>foo</div>' }
M, j' s: _4 v1 }0 @1 h - const Bar = { template: '<div>bar</div>' }+ ?' L3 d3 d- W
-
9 m0 X/ W) e2 o+ C( U2 r - // 2. 定义路由$ v. ?- I8 A0 D% t# C
- // 每个路由应该映射一个组件。 其中"component" 可以是
- G; _+ A, N) @5 v# |6 P. M: } - // 通过 Vue.extend() 创建的组件构造器,
$ m0 F8 L8 g( }: c5 \, W) M8 d - // 或者,只是一个组件配置对象。6 D. Z! k5 x d& s# r
- // 我们晚点再讨论嵌套路由。
: [: R4 P) ^0 x/ i - const routes = [
$ I# }4 p5 C- H) G V; o+ y% x - { path: '/foo', component: Foo },
* ]# u4 ?& @0 t. X - { path: '/bar', component: Bar }$ a/ i4 d1 H1 F8 n' q
- ]
' a& U S* B% a2 e2 X -
. \0 r5 g+ J7 ]$ h' H/ U - // 3. 创建 router 实例,然后传 `routes` 配置 _$ S! M: g8 M+ G; H5 U! J
- // 你还可以传别的配置参数, 不过先这么简单着吧。
! q' t2 M9 V5 L - const router = new VueRouter({ e, f0 ]. P c0 T7 o) d
- routes // (缩写)相当于 routes: routes
1 r# V3 g/ b2 B$ @9 D - })
" l q+ j+ L: F - $ `0 o" ]5 X% S5 S- a$ C
- // 4. 创建和挂载根实例。
Y. S: t) `/ z' b4 N - // 记得要通过 router 配置参数注入路由,! J% X" x6 r' ], m
- // 从而让整个应用都有路由功能
1 r$ J. G. d8 m; \# x) {8 u - const app = new Vue({1 X6 j. _, x8 z% ?1 z
- router
9 Z8 F1 M1 z- y) T7 u - }).$mount('#app')
1 }) L$ k& t1 B5 ?. G/ h -
# s0 q5 d0 u% C+ g5 r8 ?' h) d; t6 I - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
0 C; q' e! t3 b+ _下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
# |+ C, x1 N3 R; I6 d4 ]8 ^ - cnpm install
+ R5 P+ F# u+ X# k
5 I s4 Y% Q' y- }* ~+ M$ p2 l- # 启动应用,地址为 localhost:80808 U1 b1 s8 u. Q& l/ U1 C
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
/ ]8 Q! r) L' b }: z$ P% `% Q3 ]
- k- Q: m \% z# Y8 z
/ n2 X; E: u" @' b( A' A7 C R! y4 Y, f
4 J# s( W& [* R3 V' k2 \
( f) n* @) l& W) N# [
) x: F. }: P! z- }: W
. U1 E# w- F* P5 N2 s# N# @
9 A- O! ?4 l' V- K" O+ m
8 R# e) m. P! L+ ^
/ }, `' d1 j8 W4 y8 }& |
/ [8 Z9 c; ~# E: C! ~8 E) O/ x |