|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 0 i) T8 X: P2 N) C, l
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 3 h* I$ t! ]4 ^
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
! h/ W: r" F( V/ p5 H% e- <script src="https://unpkg.com/vue/dist/vue.js"></script>
, j# A9 i& }/ {; m - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
" N) Y0 N- U3 V$ m1 M- P -
! X( Z, [/ r3 @5 b, J* H9 F - <div id="app">0 w( B. p9 `# H" B
- <h1>Hello App!</h1>
7 X7 y& L& X" x. T$ u( N* L - <p>
, f3 v; s" a* t+ F8 s6 C7 ? - <!-- 使用 router-link 组件来导航. --> N8 M6 C5 N9 c( s
- <!-- 通过传入 `to` 属性指定链接. -->
1 w1 ]7 d8 z! p- m. h8 u$ m - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->9 A% k8 _& q: k, E0 R% r/ ^2 U
- <router-link to="/foo">Go to Foo</router-link>! e. K, p1 ^1 u5 O
- <router-link to="/bar">Go to Bar</router-link>2 s6 z/ I/ X* |. a0 Q s
- </p>3 d5 @8 g2 l! k$ c1 g* D
- <!-- 路由出口 -->
, Y3 D4 B2 y! K9 E" a' B1 f - <!-- 路由匹配到的组件将渲染在这里 -->
: _5 `+ F* ~5 G - <router-view></router-view>
" B" ?; A/ p% _+ f0 G - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
~& O+ f; ~" R& d - # _% K( S+ N4 Q! l3 G+ T3 {- ~ V
- // 1. 定义(路由)组件。- L8 V% B9 z' F n( m' W) i k, A
- // 可以从其他文件 import 进来
# l0 T1 ?1 c4 h* s4 h b - const Foo = { template: '<div>foo</div>' }
. @ b/ T6 b. d8 ^ - const Bar = { template: '<div>bar</div>' }
9 W3 b# @: z6 I$ q/ p/ S - 4 g: b7 N/ ?$ Y; N
- // 2. 定义路由
: u1 g/ J9 E" s; w7 u - // 每个路由应该映射一个组件。 其中"component" 可以是; ?2 l4 X! B- T* E# N
- // 通过 Vue.extend() 创建的组件构造器,
3 x! }- f& C8 h' R0 |* `/ A/ s. }4 _ - // 或者,只是一个组件配置对象。: g; f, k! y& ` t, a
- // 我们晚点再讨论嵌套路由。
$ P" R2 ~* S& {( F* L& w6 \1 H - const routes = [
( S5 K. p$ `' w) u W9 { - { path: '/foo', component: Foo },
3 D P" G/ N6 @) o) o6 T4 h - { path: '/bar', component: Bar }9 m$ a A8 K) ^7 }; h
- ]7 Z: C. {2 e4 p4 W
- . }6 N* A& |9 w4 F; g- t
- // 3. 创建 router 实例,然后传 `routes` 配置
6 q6 H2 [* G A/ b$ W3 H# b7 c - // 你还可以传别的配置参数, 不过先这么简单着吧。
% `& l( v) Y& I" ]. R2 c: B0 N& a K - const router = new VueRouter({0 a* x) V. R( x
- routes // (缩写)相当于 routes: routes: ?) {' F, Q* a a( |
- })
- y* i: p6 e/ J+ p - e3 C3 L' i# n$ k- l( s7 y
- // 4. 创建和挂载根实例。 a( m5 t3 [% H- [/ f7 T1 F
- // 记得要通过 router 配置参数注入路由,
) t6 n. w" V8 v: d% {1 ~* e @# t, ~ - // 从而让整个应用都有路由功能) K# F6 X# `+ b) w% t$ X1 r0 n
- const app = new Vue({
2 B9 u) j7 J" P- ?! N& } - router+ F, f0 z F, |8 V# o2 A
- }).$mount('#app')
3 F9 l/ s. m6 ?: D R6 b9 M6 M - , R# }+ j5 W5 G6 o$ A9 ^- O; p
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
, D, i7 G6 `5 p: o, @# L, U1 @下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm6 S* c$ J; ?, ~, }7 O+ V
- cnpm install
! U- C: D& o; m- Y
* I/ u6 o3 T9 \1 t6 Q$ H- # 启动应用,地址为 localhost:8080
' P# H' N. }5 `9 `* p - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
; I* U+ Q4 j7 X; {% C- w4 T. C# Q+ E( D8 ` ~
9 b) J2 P6 w# C; Z, m( U* l
* O3 D- F1 P( k! v
7 V' Y* }7 M6 ]' y' O, ?
* Q. y) \; y6 I0 [; D. p
, T9 e0 ~; p/ t& ~' M. h$ b5 x% `
& U% M: v/ ]+ m( x; B8 f; R2 ]1 t- t" e$ ?
# u# x% C0 ~1 t; I2 x0 w1 h9 x
2 _2 w9 J1 M# j6 x, f. \$ f0 F
|