|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 7 w6 P+ s1 P2 z7 ~/ @/ X" U7 {
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
4 u3 s% s$ z2 f, CNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
) ~9 t( R9 X) P" Q S3 ?- <script src="https://unpkg.com/vue/dist/vue.js"></script>0 V* {# q) d7 n0 Q' ^
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
2 e/ P. T F, H* I# Y8 J -
0 _8 V/ |# H: d, z- \ - <div id="app">7 O. D/ c5 _/ d6 v5 M% v2 Z
- <h1>Hello App!</h1>
4 k5 p$ s! c# z9 W - <p>
& \" W: [' c, ?8 w" e% ~: d - <!-- 使用 router-link 组件来导航. -->
! L* p" ^+ E( E5 x" m& M- p8 O- R - <!-- 通过传入 `to` 属性指定链接. -->, |( U/ J0 z$ J Q, n5 c2 X
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
. l0 Y! i" G5 @( u0 Q8 l6 E# ^ - <router-link to="/foo">Go to Foo</router-link> w: _ V9 s) o5 N( x" Q
- <router-link to="/bar">Go to Bar</router-link>) {% N _8 L1 m$ p! e" g8 c9 |
- </p>
! U% m1 x t2 `, [% r( d' K8 U j9 N - <!-- 路由出口 -->5 v) f' B4 V+ e6 ^4 N
- <!-- 路由匹配到的组件将渲染在这里 -->0 f' k9 @0 m- m8 P8 g
- <router-view></router-view>) {; B2 V5 X7 k+ V; p
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)/ {, D2 R/ _' U$ g# ]" Y6 ^7 p
-
/ w, l- z3 Y0 T; I1 S+ H - // 1. 定义(路由)组件。$ H4 m$ _7 m3 P2 A
- // 可以从其他文件 import 进来( F/ M3 n( h3 Y( _$ v! b
- const Foo = { template: '<div>foo</div>' }
8 S* O; M. ~5 H+ d+ m3 w: T - const Bar = { template: '<div>bar</div>' }
5 A: `1 M) W" E4 J0 ?6 D6 N/ f - 8 p& N! @( r) `9 @
- // 2. 定义路由 i# G. g" H, {- t" h
- // 每个路由应该映射一个组件。 其中"component" 可以是& _) G, v: e O2 b( U" A4 {
- // 通过 Vue.extend() 创建的组件构造器,
7 t1 ~* M5 j( q- w: L - // 或者,只是一个组件配置对象。
" P8 I W2 u @- l( q3 T - // 我们晚点再讨论嵌套路由。. M6 B# e ?: \+ S& O
- const routes = [5 H+ ]! @/ C. J/ L8 q
- { path: '/foo', component: Foo },& `( L. P) h7 y" }- x. X
- { path: '/bar', component: Bar }
- c3 X% d7 u& A- C9 c$ T - ]
; y6 X5 A. r+ m* m$ y, j - ( B7 t& ]5 x0 b7 F
- // 3. 创建 router 实例,然后传 `routes` 配置
9 |6 u; ^7 G; L& l* V5 ^$ }5 _ - // 你还可以传别的配置参数, 不过先这么简单着吧。
$ C6 Y% U( u3 p) `1 m, X$ l- F - const router = new VueRouter({
+ D- R% t, j2 H9 d6 {6 e - routes // (缩写)相当于 routes: routes7 C; S6 [: @4 T# }3 ^
- })* h: A% O0 G2 p! G2 M; f" }
-
. i+ F8 w* U# X$ ?( J- U! Y - // 4. 创建和挂载根实例。/ R+ x+ R+ J! ]+ r1 ?8 j
- // 记得要通过 router 配置参数注入路由,
& f& t [2 \3 d' ]+ l# A2 } - // 从而让整个应用都有路由功能
5 u% h5 V9 o9 O# E& e - const app = new Vue({
' v: R/ ~* y4 Q0 H) G+ Z+ z) o0 d - router
# g, {" {0 s4 s" T7 z* v5 P - }).$mount('#app')1 I! s, H( W2 W/ k' f0 c# M2 Z- {
-
. `' m6 p; J. \ - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 . a7 ^% K4 k6 D) Z
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm, r* U1 s- @* f9 t5 C
- cnpm install' d, l' a' V a( K3 B$ H4 J
- 8 X: V2 e) _# J3 W5 E2 ]0 g, f
- # 启动应用,地址为 localhost:8080
! E9 ~1 Q1 `% _$ q$ M - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
1 q3 V. i: H1 F5 d, W% R5 c5 K; d5 _4 ^( i& U
1 k1 z; G# w3 m% G0 M4 _7 `
* u J8 H j. @9 E' y m
& X% N0 M- b/ j8 K( M
) z; {5 S2 r" \; v7 \9 T
K% R1 W# n$ W" a/ C: @4 Z$ T2 h7 w: Q+ ]" }+ K
- K% m+ K3 c3 o7 X% I( W
( T3 W5 w& ]: |# S% t# s# F( i# p g, \
, l- [2 ]0 ~3 W7 }2 E" T- f4 d" M: f9 o2 x0 e) x
|