|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
5 k) O3 Q+ z' v" z; f8 p3 Z游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
( Z" _% d# F; }& J v& k/ ^NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
7 w& `: }$ b3 G, W4 D& X- <script src="https://unpkg.com/vue/dist/vue.js"></script>3 Q5 M. h$ N- ^6 o; z. [1 i1 \
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>: }& c% A9 `- O8 A! {* u
-
, G% N) @" E* P9 N: }+ n" H' \ - <div id="app">* G+ c# ]3 b1 s. m; q
- <h1>Hello App!</h1>
4 {$ b/ G) m' r/ _, K - <p>
! H( K+ u; `! t5 n; L - <!-- 使用 router-link 组件来导航. -->
5 |8 v' E" x" r; o! k( _ - <!-- 通过传入 `to` 属性指定链接. -->
( M8 k) [/ n' J; A - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->) g E' L! \: o k
- <router-link to="/foo">Go to Foo</router-link>
, j$ g, q( W. w6 S) }3 S - <router-link to="/bar">Go to Bar</router-link>; e' O8 F' S# a
- </p>
% R& N+ G* a5 k/ v; ^ - <!-- 路由出口 -->. T7 N& H w p! T- P8 ]
- <!-- 路由匹配到的组件将渲染在这里 -->
3 b+ H0 ]! V5 S6 b2 Z) N0 N - <router-view></router-view>5 B# K1 r+ J, E5 [% G/ g8 N
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)* Z1 q4 L; z* H, D
-
1 c" C9 V* i. U; H( E3 ?; h4 K - // 1. 定义(路由)组件。1 y1 z2 d! B7 a, ?( c
- // 可以从其他文件 import 进来
' b, e( Q/ y1 B& K9 F: w5 f1 n# X - const Foo = { template: '<div>foo</div>' }
- W' r! j. Q4 u2 W* Y' U - const Bar = { template: '<div>bar</div>' }6 k, r5 F" T0 S# S7 B" o0 S1 e
-
6 j- b+ C0 c/ D - // 2. 定义路由
. I! q+ h* c. |3 K - // 每个路由应该映射一个组件。 其中"component" 可以是
/ c6 M" ]* [6 T' `. v' u w% u$ [+ w2 X0 u - // 通过 Vue.extend() 创建的组件构造器,
9 Y R+ x! i( ?7 Y4 z' \9 q8 ~# d - // 或者,只是一个组件配置对象。
; L& J' i9 K" \$ C3 ~' v# q - // 我们晚点再讨论嵌套路由。
& o' `( O: ]. u Z5 ^7 } - const routes = [
6 p" ?) J; j# \1 g" h - { path: '/foo', component: Foo },
0 a7 A# Y' z, |) w- P `- W4 ` - { path: '/bar', component: Bar }
: K5 Z$ Q# l; V; U1 R - ]
& m2 Y7 Q, Z) S' N& a! Z -
5 l$ s6 I& ^( p3 x - // 3. 创建 router 实例,然后传 `routes` 配置( {% e$ ]* x$ M' D# J% r P3 N
- // 你还可以传别的配置参数, 不过先这么简单着吧。
, K3 y: x! A9 c9 K$ S. ^- u - const router = new VueRouter({; Y4 ?* c' w+ N6 n
- routes // (缩写)相当于 routes: routes( ]# @- Q8 C# _. v# w: c ]% |6 P w5 ?
- })$ T) @3 j7 t2 H. b; `( x
- ) D v. i6 a5 P9 G2 {6 V/ t1 l
- // 4. 创建和挂载根实例。3 d9 O+ s9 `( p9 G. n& e( H' @0 n# p
- // 记得要通过 router 配置参数注入路由,
8 F% F" \1 V( {$ L) [5 ` - // 从而让整个应用都有路由功能
/ U- m. R2 @5 Y" `4 S) T) a - const app = new Vue({ m' B A% M2 y- h2 l3 n9 _
- router# G8 _: r% h3 Y6 j4 O$ b
- }).$mount('#app')
* }* v3 r2 q/ [" ?5 c -
. L& [0 ?# H4 T9 B. ] - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 " w; g3 g3 V3 |( M" I
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
. p3 c7 \8 ^! \6 ^) J# ^; f% P - cnpm install( p# F9 E; ~* m8 R
- , L+ G' S4 w0 |1 ^9 c2 B
- # 启动应用,地址为 localhost:8080. h% M. K/ S* I
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
* g# i2 u/ W8 Y- P0 k
# S/ ^7 O# ]+ B' ?3 P7 [3 i; Z- C) C i
" j' M7 Q4 x* j# D" G. ^& _
) E# \6 X7 @7 k5 a0 |+ @* c
, }) f( _) Q3 w- E5 M1 ~
# o6 e" x6 o. |! g9 J3 y" V2 K4 E8 t4 `1 O: s- ]4 M# t& v. x/ ]
+ o3 C6 o& ^- r
3 n6 c- d% r+ t4 f& C. w- q- a! p2 u3 `0 K! V+ n. i; r( }5 a
9 W9 _7 s& z, P9 o4 V |