|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 % O5 t8 N5 g5 {4 j5 }" ~6 C, @
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 1 W% o2 V( J H& ^! F; T/ a5 j
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
! ~, |/ j6 U- I! H# Z& P$ E- <script src="https://unpkg.com/vue/dist/vue.js"></script>
: A& w E/ S: |; ^) ^. u+ N! P - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>$ k$ u# a8 \9 k2 Z
-
! o; [0 r. b. }0 J. R/ S - <div id="app">
9 _- A; y/ o4 d( t - <h1>Hello App!</h1>7 V7 F( C8 A. H3 r7 D
- <p>+ K+ m* p5 A7 t. J9 U8 U: l
- <!-- 使用 router-link 组件来导航. -->- u k4 M6 N, h q, C1 T8 |
- <!-- 通过传入 `to` 属性指定链接. -->. U3 C' F/ ]% w" K8 `1 a$ y
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->1 y5 X& ]9 l) f1 a- b7 M4 m
- <router-link to="/foo">Go to Foo</router-link>
# J) D9 p1 }* Q: U- G* m - <router-link to="/bar">Go to Bar</router-link>
4 g; ~. {+ o- k1 |* D9 A - </p>3 O4 w; I6 M- o& P( i; P
- <!-- 路由出口 -->
( ^3 }! g, S+ d; S' W - <!-- 路由匹配到的组件将渲染在这里 -->% h# K+ g) j* D" P
- <router-view></router-view>
; y- L. U- \6 _& R) P - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)% I# H" P' U$ G
- 5 L/ t# _/ ?/ t: W/ r+ }
- // 1. 定义(路由)组件。
5 j# Z$ ?% W" P9 ?( ?5 d9 ~ - // 可以从其他文件 import 进来! g/ t. h5 p3 b6 j' K1 k
- const Foo = { template: '<div>foo</div>' }0 C+ y+ a5 m% L6 G: D
- const Bar = { template: '<div>bar</div>' }
) y3 N& q8 }( f4 R4 }& v- R -
1 D6 q& {8 v5 n - // 2. 定义路由2 s% [" w J7 j
- // 每个路由应该映射一个组件。 其中"component" 可以是
5 p( `/ _) F- L3 [" \3 V- E5 z2 z: k! ] d - // 通过 Vue.extend() 创建的组件构造器,
1 N8 `+ g, {2 x& ]" l - // 或者,只是一个组件配置对象。9 M3 |5 E0 N: H6 V: q( Q8 e
- // 我们晚点再讨论嵌套路由。+ h1 |9 K" d$ [6 |/ S
- const routes = [2 H6 c) t* x( s; E* ^
- { path: '/foo', component: Foo },
1 |4 d! f9 I) l - { path: '/bar', component: Bar }
# C% J& H% ?6 ?7 {2 B; Z - ]
: C4 ?9 b7 f v6 W - 3 ?( W7 h6 f# ?0 N `8 e* ?
- // 3. 创建 router 实例,然后传 `routes` 配置 L( R6 T: V$ B- H( Q3 u0 c
- // 你还可以传别的配置参数, 不过先这么简单着吧。
, c/ ]: H( J0 [1 t1 _ - const router = new VueRouter({
& ]7 Y4 _, A; R/ f+ [ - routes // (缩写)相当于 routes: routes8 u, E! e! J& K; T# {1 H
- })
$ K: _3 a0 a6 U. y1 s6 i -
# Q# e3 p6 i9 {' ], U2 b - // 4. 创建和挂载根实例。4 J; V+ R3 ^1 |
- // 记得要通过 router 配置参数注入路由,. {% K, r4 @9 }$ w/ E" w
- // 从而让整个应用都有路由功能
# |" c. U" e. D- j$ S" f# N - const app = new Vue({
$ p( l; @( N( ^# y6 @- b - router
0 e. r3 J4 ?4 s4 \- ~3 s2 D - }).$mount('#app')5 Z- y0 F7 \( c+ b
- ; U, \; p& D4 U( E& ^& s2 C$ _
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
1 l; j0 a' D$ m3 r下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
' w- v: y0 q; ~$ p! o - cnpm install& K1 a/ p- R, o3 W3 E% [
9 \' M4 u7 @% Y2 U" v8 ~5 y. o- # 启动应用,地址为 localhost:8080- n7 @: I d% B3 Y2 D1 h
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
& ?. b1 @+ A" e2 R O/ W7 g% v1 }3 C' c( h- t! ?
- d: x) M1 A/ n' C
8 T2 t/ d- \$ B7 l( c* Z5 t6 O+ U; n- J9 x7 M$ Y
& m' t- H% t0 E) g4 ?- B! @; o
1 C- n, a" K: n( Q+ p% |4 B3 \# q. S$ y
4 Z; E3 F2 x8 q3 M1 E- s6 S! k K+ R6 K" Z D* q3 I. c
2 o) Z% B! M6 R# x/ i* t$ ^1 u
u3 L8 j: f& t# ]
: N* E2 {. r: d! C) M. Z |