|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
9 ?6 r# M4 p$ ^% y) F, |游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
) v7 ^( S0 Y3 p/ x+ i" nNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
2 X' } |3 H, p* t5 {( m3 x$ I- <script src="https://unpkg.com/vue/dist/vue.js"></script>
; |4 `7 X& A3 O4 \ t - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>1 B9 q% I5 T& }2 L: w- i
-
. Q! y: y6 W" T7 t! z7 d - <div id="app">9 z E: v8 y7 T8 a; |# [) t! p
- <h1>Hello App!</h1>
* R+ n7 X5 S$ @0 i# f, ]& h - <p>3 i# ]+ q5 r/ e% @4 f$ p
- <!-- 使用 router-link 组件来导航. -->
0 u+ [0 I" O6 z- U0 g6 m - <!-- 通过传入 `to` 属性指定链接. -->
! e; a; O6 V y( l+ G - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
1 J( `7 Y; ^/ U4 P$ m - <router-link to="/foo">Go to Foo</router-link>3 \3 }1 E3 `1 v$ u, R, \3 q: T, A0 K
- <router-link to="/bar">Go to Bar</router-link>
' Y" U- a1 Z+ A* x' _ - </p>
" x" D+ B- z# X" Z1 }+ L - <!-- 路由出口 -->
1 X6 r' W1 l6 E& Y6 A4 @ - <!-- 路由匹配到的组件将渲染在这里 -->2 W/ A3 T+ z. |! T, @. e6 ^& w# H
- <router-view></router-view>" o# [* V: D7 f" w4 `$ y4 G, A) U* z. _9 Q
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter), Q) M$ K" l+ r1 ?& o
-
& a7 C9 K d6 l - // 1. 定义(路由)组件。% g( s# \( O; p
- // 可以从其他文件 import 进来 _7 A/ ]6 t. U& R3 [9 Y* c0 b, l! {
- const Foo = { template: '<div>foo</div>' }
+ a$ q$ z" m/ C. R$ U0 d - const Bar = { template: '<div>bar</div>' } G7 F9 R+ b9 @8 D
-
, l% i. o) d8 u9 P" q/ \3 ] - // 2. 定义路由
, d1 q7 X- y5 T# g6 o8 F% Y - // 每个路由应该映射一个组件。 其中"component" 可以是4 b' |4 @, B. _' I; [1 m+ Z" G
- // 通过 Vue.extend() 创建的组件构造器,
# h z# i9 K6 G- r4 O - // 或者,只是一个组件配置对象。
/ F9 |0 D# M; b" @' n5 U: q* C6 T - // 我们晚点再讨论嵌套路由。
8 o- l7 B! k, @4 t - const routes = [
+ M0 o6 O- b; S; E$ ?7 u/ W - { path: '/foo', component: Foo },4 b7 W$ _( c5 f
- { path: '/bar', component: Bar }9 Q& a+ ^# w8 y/ f2 {- f
- ]0 B) c0 ~# W& m3 J7 _9 ~4 @7 O
-
4 z- x# s. _. c/ G9 x - // 3. 创建 router 实例,然后传 `routes` 配置
) V# J) N* k8 n8 r - // 你还可以传别的配置参数, 不过先这么简单着吧。 g# j. \9 ~$ p
- const router = new VueRouter({+ d7 _; V* D' e1 D3 M( v
- routes // (缩写)相当于 routes: routes) u) ?1 C/ E! L- [5 }
- })& B+ m/ |) }" P6 O$ Z& ^- q) C
- $ j5 W2 w4 l4 v7 j! F" n# _
- // 4. 创建和挂载根实例。; y5 b! I. X. g
- // 记得要通过 router 配置参数注入路由,
3 s2 |8 B5 X# }6 C6 a - // 从而让整个应用都有路由功能+ o) d p" I2 Z* r" R( r
- const app = new Vue({2 q2 N' I* {/ q4 x% N
- router
8 u: J& l4 q' g, d1 y - }).$mount('#app')+ e+ z+ V/ r6 F* F$ w8 N0 R3 I
-
. H5 e* a% P8 G U) O# k - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 9 ^1 z8 `5 b9 T" e$ p( f; w5 d
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm4 J1 i' }9 }) o+ h0 f& ~$ E: J
- cnpm install2 [! J! i) n' O
- 2 i% t% }4 z. T4 ^7 ?- e
- # 启动应用,地址为 localhost:8080
' K4 c6 B" t* f8 v - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:8 a; [! G6 E! D# P$ z2 G
3 L' U/ w' u% @+ H3 s7 j" ^5 g2 s
( o7 o, S5 V ]8 o# ?2 D
# d( u+ e; d! b7 t! x# C0 A2 ], i: G3 \8 h7 s
" I1 w! F& `0 O$ P; _
& }& |. B! t7 @$ F4 f* o% g/ ]& d {% P# e5 p5 s
2 j6 a) F( L4 Z! D# @" m3 I6 Q+ c" c/ u1 |
$ B8 W. r; c5 t/ ]& ?- ?4 V0 M! l3 W( T* g( d1 B# K" ^# M
|