|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
# @% R2 e8 e7 s1 M+ W游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
- [, [/ Z$ d7 ~. U C" A/ m0 V( ?NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码( z, u" s$ C- h; {
- <script src="https://unpkg.com/vue/dist/vue.js"></script>' c. u0 T- H0 j) G6 o5 @) p. K: ?
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
1 ?+ K. k* v" w4 g0 y6 b -
5 o0 ]0 U) W: U - <div id="app">' W+ l3 i) J" ~; u6 L0 z
- <h1>Hello App!</h1># B( E4 u1 W& h" _
- <p>; I5 O+ T2 C0 P- B Q
- <!-- 使用 router-link 组件来导航. -->
) v" w3 Y4 r. |3 y" g - <!-- 通过传入 `to` 属性指定链接. -->
, u, h, `) j% F/ r' c6 B - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->8 ^+ W" G: a* u" `: ~
- <router-link to="/foo">Go to Foo</router-link>0 Z% q: J, \* e& S
- <router-link to="/bar">Go to Bar</router-link>6 Y: g& a5 G6 N& |4 l: T# u
- </p>
) d' r6 x d5 Y2 y! [" _5 e - <!-- 路由出口 -->
+ ~1 v% l) r9 R - <!-- 路由匹配到的组件将渲染在这里 -->8 x) D# e: P& j
- <router-view></router-view>
3 t/ O! T6 H+ U. T+ I - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
# e @- g' H9 d/ L - % m; ]; s, H7 l0 D
- // 1. 定义(路由)组件。
2 B8 M9 b& ^( |3 a4 [* Y - // 可以从其他文件 import 进来
e5 p9 a9 w0 p q- ]. [! m) g - const Foo = { template: '<div>foo</div>' }
1 P* K& q$ h5 R( H/ x& Y3 h6 m+ G - const Bar = { template: '<div>bar</div>' }/ s, ~9 _% I( o, f8 {; t; @4 y/ K
- 4 F' L0 {/ r6 L! U8 C
- // 2. 定义路由
( b' J- z/ r+ \" n, M - // 每个路由应该映射一个组件。 其中"component" 可以是
# Q; ?0 ^' K& R! }' A - // 通过 Vue.extend() 创建的组件构造器,
; M% V; w' J' u - // 或者,只是一个组件配置对象。' y. h5 {( P8 V( S& x
- // 我们晚点再讨论嵌套路由。
' F3 ]3 U6 n7 v* @9 Y - const routes = [
# z3 B- A" C2 {$ R: g! y - { path: '/foo', component: Foo },& c+ A+ c7 p, i& Y9 z5 h
- { path: '/bar', component: Bar }
3 q, Z, u5 k! g4 n; J. P/ s5 Q - ]0 _* Y) R9 E- y7 J' _$ _
-
7 J' {- Q( Z) u* Q7 d - // 3. 创建 router 实例,然后传 `routes` 配置
9 ?& U2 H# [1 T& b0 v - // 你还可以传别的配置参数, 不过先这么简单着吧。
) D* d4 Z5 K1 H) q: @2 e - const router = new VueRouter({
, u p5 L) y- a; q5 s. `0 W/ v - routes // (缩写)相当于 routes: routes; P- {' E3 _* L4 {; d
- })
% V" Y6 y4 E+ P; {; e' L - 0 N$ i0 U0 D. j# {7 E
- // 4. 创建和挂载根实例。" I' r, s, a9 ^3 U- ?
- // 记得要通过 router 配置参数注入路由,3 ~5 G+ c$ E' D9 A7 d2 u; Q1 H9 X
- // 从而让整个应用都有路由功能
' d! Y' O) N/ _1 V3 K7 h" b. t - const app = new Vue({6 G b+ t- h/ o' P
- router
+ b: q0 }# z" ^' n - }).$mount('#app')
% d9 z9 b4 D# d# j& |8 j0 F1 S - * V9 B: K9 A+ m( c; o( Z" M: W8 @
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
$ l b* B7 k% \5 C8 n5 g+ ?下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm4 d* |" s, Q5 k2 j4 \% ^
- cnpm install
' X, v2 H+ O0 t/ E) q& W - ) M, H" Y( a( A5 K/ @$ s
- # 启动应用,地址为 localhost:8080
( r7 B, Z$ e( g0 ^1 j - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:8 U" K5 w0 U: \' M( n5 x4 ] _
/ B* Q) V f' E9 a5 z- D2 f
F0 e* b% p9 B1 ^4 E9 ]( n; W: m8 @2 E; C0 z8 Z$ y2 u3 u
# Q$ m) r( `( I& |# z$ \% ~
+ x0 Z" ^/ F) ?6 R
% m. c$ k, g/ i( i, D" v# a
2 _" q% E$ V8 M3 U0 j- Q$ T1 f
; ]' Y/ @$ V1 q# V, Q
. M8 ~8 @! s- i; K" p
: `9 ]5 j" Y3 c7 Y+ I
. v+ M7 @- y8 q3 h6 B) Z
|