|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
- x0 @& I8 N0 N" k' \游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
; t) @- U8 F: iNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码' d0 y% w8 `( u7 H6 j$ v
- <script src="https://unpkg.com/vue/dist/vue.js"></script>+ J: x( Q1 H2 N& S/ Y! L: Y
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
, W0 W4 O6 r8 ~0 q K - 0 }; h1 `: G, g, D
- <div id="app">3 D- `' K; d' w/ D+ z
- <h1>Hello App!</h1>4 n/ e* Z: Z8 J9 \" @* G
- <p>. [/ F- G; g# Q
- <!-- 使用 router-link 组件来导航. -->
* [6 s# h. h4 W1 {) K& x/ ] - <!-- 通过传入 `to` 属性指定链接. -->
4 a6 C/ N, v0 g" k - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->9 f% M$ @7 M% B& U( {# Y
- <router-link to="/foo">Go to Foo</router-link>
1 I, m& v% k3 M( ] - <router-link to="/bar">Go to Bar</router-link>
' C* ?0 x- D5 e) b9 X6 l - </p>
9 w5 E! }& w7 q - <!-- 路由出口 -->
$ h% {( |1 w8 r: A! e! h - <!-- 路由匹配到的组件将渲染在这里 -->6 ]3 `; s/ f8 w/ @( h
- <router-view></router-view>9 }( f1 \6 y, \# i' ]# [! d
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
4 J! j0 L) a2 b - ' W7 D9 A7 P& r$ `
- // 1. 定义(路由)组件。0 O* ^9 ]( v T7 p; y- ^1 H: O0 w
- // 可以从其他文件 import 进来4 X0 i4 g- k0 p6 ~) V
- const Foo = { template: '<div>foo</div>' }& @8 ?* g8 J6 n: @: H) g
- const Bar = { template: '<div>bar</div>' }
) B- b- n$ M" p4 X: `4 B* a - * f! ^/ F1 B) }4 A4 Z# d! Y. [) e
- // 2. 定义路由
- E( |* L/ N: T( ~1 N2 P0 N; c - // 每个路由应该映射一个组件。 其中"component" 可以是: y9 G. x! R' ]) I3 {% c |
- // 通过 Vue.extend() 创建的组件构造器,) n9 ~# ?9 z4 P$ \ a1 p7 L1 l% Q
- // 或者,只是一个组件配置对象。 C7 v$ w! S1 t& C2 X6 v
- // 我们晚点再讨论嵌套路由。' D; T, X$ ]. _9 J; j- b m# ]
- const routes = [
: D- I! C3 x1 X; b' P5 e - { path: '/foo', component: Foo },7 J9 y% y2 N; T* ]
- { path: '/bar', component: Bar }
. \ T0 R( E3 } - ]
) t. b/ o6 @* F. _1 x4 Y -
, ^# z8 y5 ?: A- w; F, n4 n - // 3. 创建 router 实例,然后传 `routes` 配置3 z b. V; f" k5 ` E
- // 你还可以传别的配置参数, 不过先这么简单着吧。
5 d+ P9 I7 ^/ i* I4 ? - const router = new VueRouter({
" Z+ I0 H; _* a) Q: r - routes // (缩写)相当于 routes: routes9 d# C1 H- B9 M7 `0 A
- })% R0 a: L" N% c ~& p! b" b
- / p1 l! G/ c9 f
- // 4. 创建和挂载根实例。
# h- t. C" P" g. u - // 记得要通过 router 配置参数注入路由,- p* B& C- [) `& v0 ?. r
- // 从而让整个应用都有路由功能
' e1 p/ W# u& K% | - const app = new Vue({
5 v7 g+ `9 X! r, I$ L* I - router
8 P4 Y6 u i, {' O& |2 V/ ~( P - }).$mount('#app')/ I, L, N- s3 X8 H
- 5 n4 q. T+ I- y
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 , F4 M: [2 l: n7 a* M
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm& M1 u7 c# k* s% \9 m
- cnpm install
# Q" o/ r; K1 p3 d p5 j* n" Y
" Q* E; z1 e3 I/ _8 |) O/ A1 o/ @1 ?- # 启动应用,地址为 localhost:80804 ]* O3 w4 q D' _, K3 U" R+ c, t
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
% s! c) z7 `4 e* ]1 ]8 t$ W
1 o+ ]& R' y$ L3 F, O% g' l0 X1 Q( u4 K
: _: _! `. o+ d0 Y/ r8 z: g
' [1 U- V. c6 [8 q% O! v
- W9 C# j% \" x9 Y. _8 B4 X9 @2 Z3 v: L5 a6 a$ E6 V9 ^
( [6 m* e1 S Q n% ~6 V- I
' [* Y" X# d" ~3 S
3 h, P8 `" d* B/ Y3 c+ v- {, {9 @( R, l
* |5 W; D9 A( u* `( L5 f, {0 |( R. h
|