|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
- V& H- z0 T# M" ~& _8 `9 Q游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
7 m. L; X) @ z. w7 e' z& FNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码, f) Z7 s a# F7 U# t
- <script src="https://unpkg.com/vue/dist/vue.js"></script>! x! h5 \ I4 x2 y+ M! Q/ U& z/ l/ [
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>, s: E. L; y! O' l
- 4 r* B6 @/ W- I0 H3 ~" e
- <div id="app">
, T( t' W' K# Z: X) l/ i/ a - <h1>Hello App!</h1>
& \. y8 c, ?2 b/ F8 c8 Q - <p>
+ n. @/ i9 H3 b' a - <!-- 使用 router-link 组件来导航. -->
8 B5 K2 Q ] {+ t* n - <!-- 通过传入 `to` 属性指定链接. -->
# R0 k# R% a" Y! r9 z2 W - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->* k+ z1 `$ @: m7 R4 O5 i2 X
- <router-link to="/foo">Go to Foo</router-link>
4 [4 H2 U' Q$ t. x: J- r - <router-link to="/bar">Go to Bar</router-link>
; F! k0 E! T1 {9 U# k4 u" O - </p>
) F" ~2 s! z3 @3 E' @% l0 } - <!-- 路由出口 -->
3 F* F% |' a8 s* w2 A' x" k8 Q - <!-- 路由匹配到的组件将渲染在这里 -->2 \( {1 C5 P/ v
- <router-view></router-view>1 j) o0 E- E( m/ g$ t
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter): A' _5 y6 F8 Y: J$ {
-
! ? U% O, U$ Q4 @$ u - // 1. 定义(路由)组件。+ @" J2 i3 Q) }9 d9 w
- // 可以从其他文件 import 进来
3 ?: ^( \* F# \4 Q - const Foo = { template: '<div>foo</div>' }
8 p$ o0 H( |- z3 a. T7 J - const Bar = { template: '<div>bar</div>' }
: v8 X( F! T. u" x' [6 m - 6 C+ a3 I, r$ p* ?% M) n) G0 ?" _! O( R
- // 2. 定义路由, _ u7 N( y8 n$ A( B* ]
- // 每个路由应该映射一个组件。 其中"component" 可以是
8 a, ]7 Z! s/ W# l1 U) R - // 通过 Vue.extend() 创建的组件构造器,
/ z# U; X+ }" S6 F. Z/ {, \ - // 或者,只是一个组件配置对象。
$ }* _* Q( r3 |; o& k% g - // 我们晚点再讨论嵌套路由。: ~/ K; A6 ]# Y
- const routes = [; d, ]# ?; u( `) F- H' A% ~% \
- { path: '/foo', component: Foo },
. b# p" c8 p, t - { path: '/bar', component: Bar }) `* F& Y5 A- J
- ]5 F1 X9 u; z" Y
- ; s, {) M) E, e" ^2 \' V. R: A5 U
- // 3. 创建 router 实例,然后传 `routes` 配置
1 _3 ~2 R0 D9 I, ?2 w - // 你还可以传别的配置参数, 不过先这么简单着吧。- `. ]) G' v" j1 f/ ]" E# }
- const router = new VueRouter({. j% T4 F! U6 x3 l+ ?% }3 `
- routes // (缩写)相当于 routes: routes
1 r# E, X5 G) [+ t: j - })$ e' y8 u# E+ O# _3 y- f% Z
- X3 e( U- v1 F+ ]# ~" j
- // 4. 创建和挂载根实例。
* w* C5 X' ]$ ^' ] - // 记得要通过 router 配置参数注入路由,
0 ]; w/ D7 h3 c1 Z8 B% G+ l - // 从而让整个应用都有路由功能
' V# h2 w# p- i! P; J' Y - const app = new Vue({
8 x' }% c+ [3 j/ ]/ s+ Q N - router# C5 _( |8 A+ I) z% T
- }).$mount('#app')5 U% _0 b! {6 }1 Z
-
4 E* i8 h% D' I. X! H! k8 X - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 % M8 v) p% `! k. Y2 i) Y* k/ u+ U
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
; s* Z+ ~: W4 {, Z - cnpm install q9 c! V- E' g
- 9 q% i6 J% D( K& X B$ q% Q1 ]
- # 启动应用,地址为 localhost:8080
4 j/ s- m8 _/ ?& A4 ~2 `4 D: ^9 N6 [ - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:( r6 X2 s3 P# T
" s8 s! b- J4 h$ {9 ~
1 f1 o0 N6 y! F, G7 Z5 U% _
; u! m. L+ ^7 \4 a4 N
9 F; u, z& l2 n8 X; u/ M$ e: o& h' F% R
# Y% [: |! z* i5 j* D- [* g8 p' m1 ~5 R5 {% n" y
4 N+ U5 f% P! t6 w) l1 ~* \' L& _4 c! p" ~: l
/ X* v# J1 R" @. n/ f- ^
$ v/ V4 X p. E7 Z) w
2 f* [( A! w: \( z |