|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 X7 ~% ]" v2 u; V
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 ) O E( f! @/ N+ p4 p. M
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码. N$ m: a' P$ T6 C) r
- <script src="https://unpkg.com/vue/dist/vue.js"></script>
0 ] U0 Z. z3 c9 } - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>8 X- @* D( s+ |
-
0 @) d3 Y" \/ R; h3 C3 h8 [; N% h - <div id="app">
0 g% n5 r# J) y - <h1>Hello App!</h1>2 ~* i6 P$ `6 [) i
- <p>
- |* e; z% Y" C. { - <!-- 使用 router-link 组件来导航. -->( x& R( T2 U: l
- <!-- 通过传入 `to` 属性指定链接. -->
6 r3 b+ F4 S: S% J - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
% q. R( O* Q9 @: j5 o5 s2 J - <router-link to="/foo">Go to Foo</router-link>- d2 A9 V+ Q+ w! t$ ?, @+ m
- <router-link to="/bar">Go to Bar</router-link># T8 o% R. M8 u3 L6 r1 \
- </p>9 s4 v( W) ^+ @. T9 J" ]: v1 n
- <!-- 路由出口 -->
& ~1 ]1 |0 }+ D' O - <!-- 路由匹配到的组件将渲染在这里 -->
2 K( m3 q- Y1 s8 q4 Y - <router-view></router-view>7 ^5 [9 g& G2 \8 I4 `* L
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
7 h7 [5 g0 Y& p- E* h, \' w* F) i - 6 t$ f4 a2 [0 h$ B
- // 1. 定义(路由)组件。
) q1 |( e. p# G& h" i. _ - // 可以从其他文件 import 进来4 D* ?, E& P4 b/ v( M
- const Foo = { template: '<div>foo</div>' }. \: W _) M: y( t. P5 ~) h5 ~
- const Bar = { template: '<div>bar</div>' }
+ A7 k/ l Y+ ^$ S* [ - 4 J+ b5 W2 i, @" L: V
- // 2. 定义路由
/ [/ o [; U3 l3 r9 P - // 每个路由应该映射一个组件。 其中"component" 可以是
8 H9 |' E- p; F* M6 t) o6 ^. @4 J - // 通过 Vue.extend() 创建的组件构造器,7 b$ Q, K+ ^) Y- l! t! y/ u
- // 或者,只是一个组件配置对象。
: P8 [8 w% t( O6 y - // 我们晚点再讨论嵌套路由。
5 |4 {1 U# D( L) | - const routes = [0 x* E( H& e j) k9 y% r. [$ }- c
- { path: '/foo', component: Foo },* z! m. h7 ~& |/ V+ L! v% v9 ?
- { path: '/bar', component: Bar }
) R$ F( S8 w+ ]! J - ]( ~3 j* N) Q) F& y9 A" t5 [
- " N8 P9 d9 a0 i( g9 Y
- // 3. 创建 router 实例,然后传 `routes` 配置4 U. g1 a3 ^% L% R
- // 你还可以传别的配置参数, 不过先这么简单着吧。
" q$ d, k/ ~8 c' I( x - const router = new VueRouter({( n1 w) ]/ O% X/ u2 o9 u1 r z @
- routes // (缩写)相当于 routes: routes9 t9 A, X) x# u4 F7 D+ r6 Z' P) r
- })- ?7 D' v3 x# h8 c, V
- . i) Y; \" J5 `+ ~% o6 T
- // 4. 创建和挂载根实例。
/ p- H: N8 V) r8 A. a - // 记得要通过 router 配置参数注入路由,. g& B; P y1 Q. @' U; W8 E' E% Y/ R4 q
- // 从而让整个应用都有路由功能8 x% F: i; a0 Y& e; }) E q j
- const app = new Vue({
, ^* g( Y8 {7 t1 M2 F7 p0 m+ o9 P - router1 ^+ W9 }. s8 D
- }).$mount('#app')
; d& v* p" w/ D# y3 D -
5 g6 J; L" m# J - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 - \' g, O! H/ J! H8 Z2 u6 U
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm: `- ~' Q, _' ?% F* l2 Y
- cnpm install
/ D. V; }+ ^+ n$ x
b; S# X9 M% O3 L1 c5 t- # 启动应用,地址为 localhost:8080- x) p9 i: T Y7 O* n3 d% d
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
1 S9 P' J( P- C( \7 v
$ j4 b( k7 e7 ]$ |1 M' ]5 g4 ~' ~ O8 E5 p2 K& |) I
' \; n. i& f% t5 Y
2 ], b( w3 b, @- A" W* [2 O) c# m7 z( F9 k4 L
L& I+ n; g ^, P0 O7 O7 P
; }: }$ U% B/ V4 r. r6 k1 |: ?3 }6 e+ b* R) ?
7 ]; G- N# u+ L
) l# O) U2 E* c# [
8 |# a1 N- [7 p/ E' E; c
|