|
本章节我们将为大家介绍 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 F$ f5 S) I" n5 x' J( l游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 4 Q/ k# B" _- o- ]" J' u* q
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
0 X/ h5 P, S. ]- <script src="https://unpkg.com/vue/dist/vue.js"></script>
1 |% Z* t; p! R4 u# ? - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
4 t3 ]4 s% R; g$ q* x; h -
7 U% x# z/ b: u( y9 A - <div id="app"># x9 `1 _( w6 W, d1 K0 Z4 Q
- <h1>Hello App!</h1>* Q' l3 i/ H% C1 P
- <p>7 f' p1 ]3 K4 J
- <!-- 使用 router-link 组件来导航. -->
0 S/ O& R# h8 L4 b, n - <!-- 通过传入 `to` 属性指定链接. -->: O$ ~3 L4 h- G& k
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
, Y2 P; `9 g6 l0 a4 P9 d5 U - <router-link to="/foo">Go to Foo</router-link>" g1 L l/ `* I W" P5 j! ]& G N; b
- <router-link to="/bar">Go to Bar</router-link>7 j* `; e# k8 g/ a1 o' b1 N, @
- </p>
) T- \ ]0 R* T4 w9 z - <!-- 路由出口 -->, J; X" B& M) ~$ c/ ]
- <!-- 路由匹配到的组件将渲染在这里 -->; B; k+ {6 I/ ^
- <router-view></router-view>+ p9 T: [$ u4 o5 b @ [4 X
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter): c, O# I3 y0 H$ F* j) `; a( u6 Z* i
- 7 t8 ?$ Z. q8 W; T8 P q: J" G
- // 1. 定义(路由)组件。
. e& b5 u+ }6 s4 F6 V - // 可以从其他文件 import 进来/ x3 K- W5 K6 T( j6 l1 j4 o6 r
- const Foo = { template: '<div>foo</div>' }7 @. |: a8 a2 Z
- const Bar = { template: '<div>bar</div>' }0 [% u, b/ n8 M/ \, j8 c
- . C; l+ R' h, b) ^6 u
- // 2. 定义路由9 \3 v. Y9 B3 I
- // 每个路由应该映射一个组件。 其中"component" 可以是( Y0 T. |& T+ d
- // 通过 Vue.extend() 创建的组件构造器,
! ^ \# M5 h' Z: T9 M: p" L - // 或者,只是一个组件配置对象。
8 l8 n# ~( Z" O. W - // 我们晚点再讨论嵌套路由。
5 N' |* L! b( d# Z - const routes = [6 K; ~* ?' X7 ]3 A3 _" _. b/ e) v
- { path: '/foo', component: Foo },
' _) S" W: S) E& g - { path: '/bar', component: Bar }. E0 p: i1 e0 ~( |: p2 E _$ y0 p
- ]" M) f$ W7 s. L1 k5 [4 a/ T
-
7 T d6 ?, r+ K; ~ - // 3. 创建 router 实例,然后传 `routes` 配置
3 F7 _6 H% ?( k5 U* ] - // 你还可以传别的配置参数, 不过先这么简单着吧。
# N; R3 @ _3 x% v0 e" X; \ - const router = new VueRouter({2 x' ]# S3 j7 f0 A+ I- G; `
- routes // (缩写)相当于 routes: routes
5 ~" r( g& v3 g- b# D/ E - })/ E* F. m5 R g
-
: w% J; }0 O" [% l+ p - // 4. 创建和挂载根实例。) r& a! g- Z+ }
- // 记得要通过 router 配置参数注入路由,
+ C6 T2 `" H9 c4 m# C$ I - // 从而让整个应用都有路由功能
3 ?7 |( {# ^9 B# I' x - const app = new Vue({2 T6 ?1 E% P W; ~. Y
- router9 D; U9 J# L8 Z+ r$ g
- }).$mount('#app')0 f3 @2 `) J8 q- N
-
. f3 [% ^: {& n; V - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 ) S! k" m) U" j: _
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
6 a% P% B. _0 j- d- D$ s9 L - cnpm install- k0 F' ~5 l& D2 b
! F& n2 ~. F0 u1 j. ?) p. i' e- # 启动应用,地址为 localhost:8080
% ~: H2 h4 d' N- N1 B% I4 W! ]1 D# @& m - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
7 X0 @# U- c% I& M. R. }9 w9 B4 M6 y4 D+ e* y2 r
: N) T. h' ^9 D9 B! C) n. r# y, `" n: N: Y' N' y u8 ?! T
# C. s8 `( ?8 Y- }6 e+ p
+ p2 q6 A! W+ c
, a& r2 D0 W! E8 s8 w+ O, P* k) N: i: C ^( O) D2 l
* R/ Z1 A( O. P0 X, L
2 i" L0 z6 W" X; g
p( N( i; Z/ T- q1 G- K2 E5 X! R; B, i& z/ e
|