本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 9 \/ ?, M/ g5 H- p4 \
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
0 }% W4 Q; o. |6 y5 }NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
/ j1 l5 u. T9 ]! F/ P+ o- <script src="https://unpkg.com/vue/dist/vue.js"></script>
7 \9 U& b& J" h0 t/ t - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>8 ?% n! N$ d, A* l- L
-
% P- B- h$ H: z' Y |% `& f - <div id="app">
( H# M5 f' v- Q Y7 g - <h1>Hello App!</h1>( E4 d0 a# o& ]+ X: I* E
- <p>
2 d7 [3 ] K& ~5 ?9 E) _ - <!-- 使用 router-link 组件来导航. -->
6 C: ~: k z# b2 [ - <!-- 通过传入 `to` 属性指定链接. -->
" Q, h/ v! D; c- v: L! m - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->$ J7 i- h5 k* Z5 Z) O
- <router-link to="/foo">Go to Foo</router-link>
6 Q1 h1 W# J+ m- i2 A, C - <router-link to="/bar">Go to Bar</router-link>7 j) K! @$ J3 R; C/ p
- </p>4 ?8 `* e2 q; T5 M( b: a# _
- <!-- 路由出口 -->
% g4 q7 o% B" }: |. @* _+ f - <!-- 路由匹配到的组件将渲染在这里 -->
+ ]3 n! c' H7 B6 t& D - <router-view></router-view>
. o. c( t! ~; Z9 i, o - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
/ U; \. m2 Y' D. I -
- W( b5 m+ R' V4 O - // 1. 定义(路由)组件。" |3 h6 d. a, F2 y U" V/ G5 d3 |
- // 可以从其他文件 import 进来$ e1 f* A% w" g2 i
- const Foo = { template: '<div>foo</div>' }: Z1 X) i1 m6 o& ]
- const Bar = { template: '<div>bar</div>' }
2 c. J; \+ ~1 K; H - 8 i" [4 r* b7 T# h$ C
- // 2. 定义路由1 V% O8 E$ b1 {0 Z" {) _
- // 每个路由应该映射一个组件。 其中"component" 可以是& W. {0 C5 A3 u
- // 通过 Vue.extend() 创建的组件构造器,9 u1 k" _0 o4 f! n
- // 或者,只是一个组件配置对象。: s# n: Q" S& h
- // 我们晚点再讨论嵌套路由。3 U: |5 |! l) k: @
- const routes = [( i U/ k- P" O6 R; Q9 \/ ~+ b
- { path: '/foo', component: Foo },
0 b" o4 \! w8 d- o! a - { path: '/bar', component: Bar }
7 [& Y6 X+ F6 g% f/ N1 v - ]/ k/ a) X- G! U7 ^. _' E
-
, p% S3 [7 _: S' ] - // 3. 创建 router 实例,然后传 `routes` 配置
: g+ \7 Y9 u$ _7 m) r - // 你还可以传别的配置参数, 不过先这么简单着吧。
! z' z8 q% G" m9 h/ ^; f* e: O/ E/ S - const router = new VueRouter({" E1 i8 A/ D$ _5 Q+ {- ]* S
- routes // (缩写)相当于 routes: routes; i% F/ P. J! l z: S
- })( } V0 {6 l$ L! A) x& T
- 1 e7 H7 N* `; f6 [: T8 Y
- // 4. 创建和挂载根实例。1 ]- X8 F* [% n) ^1 ]1 w
- // 记得要通过 router 配置参数注入路由,
5 {# B/ @4 c/ r8 q6 E" j5 {3 K - // 从而让整个应用都有路由功能
8 u1 {- d5 J9 k" | - const app = new Vue({
- k5 t" {7 X$ y0 D* O2 S8 H - router1 A1 T$ v8 Z: m8 d
- }).$mount('#app')
2 ]6 a$ ~* e B0 r2 a3 o1 _9 M -
+ k' d7 O+ E% Q; A# C7 [4 n - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 " O' p. i3 ]/ _, D
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm1 f# L; p: m8 R4 _- d9 w% Z
- cnpm install
6 w- ^8 L3 r; H9 ^6 ?% S - # b, p2 v# H- E: w
- # 启动应用,地址为 localhost:8080, [: F; d3 [# D; E
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:5 C- Z. T E( ?: q4 `+ B: w
. h' i; x2 i. p+ r- C% r; v
# R$ K$ t5 W- H
- k. u. c% T4 a; C- n+ U3 R. \7 q S: ~- i& @% t& h; }
2 c7 B: l% f0 p# u
% M7 Y0 q0 b5 a8 _! s2 j% E: a' f4 _4 ]: I) h
& F; C4 j+ {/ N7 _/ i* g4 } [+ f. H; O
% |9 Y! V# z5 ?. w6 h C$ L
- h) F6 ], A \7 q, p9 H( I- s6 C |