本章节我们将为大家介绍 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; I; E( f" M( }) x5 H游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 * [- @) V* L4 h# @+ A, J
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
7 x/ X4 F$ W4 |& G- x- <script src="https://unpkg.com/vue/dist/vue.js"></script>
/ A* ]4 d8 ]4 m. g7 n5 ^ - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>) b% X D. r8 [, W7 G9 y
- 9 U3 L7 ]& C$ T9 G9 u/ [" O
- <div id="app">
: F1 K4 B: y5 j - <h1>Hello App!</h1>
" \' Y1 z) j+ U- O, V$ F - <p>3 y1 j; s. Y& p- Q' g6 W
- <!-- 使用 router-link 组件来导航. -->
; a3 y2 o' O& E& q- Y7 i: P S - <!-- 通过传入 `to` 属性指定链接. -->! N7 j3 s8 E9 I+ m4 k* G. {. q
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
: m- F! m: y, p( S1 P" b - <router-link to="/foo">Go to Foo</router-link>6 k! }9 Q( F t' R9 V; u0 r6 [
- <router-link to="/bar">Go to Bar</router-link>
# P9 H: o+ a/ g0 i1 l - </p>$ b+ \2 o/ m% b' x; x
- <!-- 路由出口 -->
1 k, X+ d( S+ J5 n* A - <!-- 路由匹配到的组件将渲染在这里 -->2 p! o5 D* z* G8 K% v6 c
- <router-view></router-view>
& g$ g1 ?9 @; R: F2 U - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter); ^, z% W8 e5 e) Y) p
- 9 m; K, R, u/ {0 j4 g H( C
- // 1. 定义(路由)组件。
( r" R2 \& A4 j5 J+ M6 _ - // 可以从其他文件 import 进来
. q1 _. ]2 F' I - const Foo = { template: '<div>foo</div>' }- z% D8 {: Z( a' j8 s( X% W# w* |! e
- const Bar = { template: '<div>bar</div>' }, `3 k% S$ T: L% x: l6 a( G0 B) V
-
7 ~4 A ]1 A3 u" w2 V - // 2. 定义路由
! _3 Z2 l/ h2 R) Y3 G - // 每个路由应该映射一个组件。 其中"component" 可以是
( m% C6 i; [& F6 _ B - // 通过 Vue.extend() 创建的组件构造器,; \) \4 w+ @* P
- // 或者,只是一个组件配置对象。9 I+ O1 s! z0 ~5 E3 E! \6 z
- // 我们晚点再讨论嵌套路由。0 L! R2 H% V: p* y7 a9 `4 ?, w& J
- const routes = [
- ?* I$ o+ o9 y" y! A$ ^ - { path: '/foo', component: Foo },
9 u' O6 X3 b7 u& G& t - { path: '/bar', component: Bar }
! n3 O7 U$ F. m# A& |4 Y - ]) j1 n& W0 T2 U4 m" I
- % l( |7 C9 G- h+ L6 V
- // 3. 创建 router 实例,然后传 `routes` 配置8 ]: x% |6 a% Z1 i
- // 你还可以传别的配置参数, 不过先这么简单着吧。
- v* h$ y, X9 W: s5 d - const router = new VueRouter({
, c7 ~0 g) @0 S9 Q - routes // (缩写)相当于 routes: routes- A' r4 U2 x$ W$ b( Q
- })
: }* q( A( U8 H7 S - - a7 N+ ]: y& F" Q+ g/ `
- // 4. 创建和挂载根实例。/ f0 l" g& _1 t/ p" `( X
- // 记得要通过 router 配置参数注入路由,
% c) d4 `" N& X; o: ^+ O - // 从而让整个应用都有路由功能
6 _/ o0 \- y( |! f7 `+ H - const app = new Vue({
7 g3 N1 k& f, e( x: p - router3 `3 a% ]5 Q* G
- }).$mount('#app')! p5 m5 n$ \1 K6 b ]" ^
-
& Y" V1 U$ m4 M5 a' [ p5 @ - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 % C' s+ Y3 F& U7 ^
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm" r# w9 d( B2 x7 M) o
- cnpm install% t( N1 k$ z5 {
: L8 j1 o1 E+ ~( y0 U# Q2 }$ W- # 启动应用,地址为 localhost:8080+ S: B! G3 _5 h7 g' G/ d( k
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:# K% w1 c) I7 K" C. L! n- w8 k/ K) Z9 U
7 o0 O; @0 j; k& ^% @& H- J; B
3 }7 h9 f; e; m+ o) J# V3 e& i
9 U! \8 P, U3 h5 N4 ~
& c& m3 b q( m$ i; [: y' o8 \! k5 X0 G0 z& x: p
. ]% `5 u: ?: F" @) P6 n, c" J7 h& A5 r' ^& z
, w( u* |/ q6 K
! P" B$ ^: {. o7 M
$ V( x& Q; i# A" U0 C+ Q, V |