|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
* ]1 @6 Y7 m4 u9 P: N2 q3 a游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 , i# U I8 T4 U: p6 i2 k3 ^
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码7 H1 {& J9 ^* j- g
- <script src="https://unpkg.com/vue/dist/vue.js"></script>+ e/ ?% i' P2 @& {$ _
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
, ^% W2 r7 p" B! |! } -
0 n2 N1 P3 v5 ~ - <div id="app">
5 B% @$ k" i! t1 F: X4 k, k - <h1>Hello App!</h1>
% ~/ p4 a: x7 z. k$ V - <p>
6 [, K* M5 ]6 E! P, p. W* G: t C - <!-- 使用 router-link 组件来导航. -->; s* f Z- W4 e% u* u+ Z" n3 @- c
- <!-- 通过传入 `to` 属性指定链接. -->. v( h( g) {: W
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->1 v3 N6 F" W1 a1 x* d* q
- <router-link to="/foo">Go to Foo</router-link>
: C4 h( N2 Z* g- n5 F - <router-link to="/bar">Go to Bar</router-link>1 r5 r( E4 |1 p2 ]& i& _
- </p>( W, _' R* F% r+ M; ]2 o
- <!-- 路由出口 -->2 b7 m: i' B# X
- <!-- 路由匹配到的组件将渲染在这里 -->
% R- o, _; j7 f: D/ H$ M - <router-view></router-view>. ^: l2 a/ Z" O2 J; h* ^* u* T
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)$ A3 B+ n: ]& A W, Q
-
, _0 }- Q1 M, Z! H4 M* g) ?4 N7 | - // 1. 定义(路由)组件。4 m* V* B2 p$ n5 |6 G3 U) W1 f
- // 可以从其他文件 import 进来4 C3 v, T$ W+ T- w5 b, H
- const Foo = { template: '<div>foo</div>' }
\/ W4 g) T# e5 `5 G - const Bar = { template: '<div>bar</div>' }4 ]- A* H6 k% x* X
-
" p- u2 b+ X' F* b' s - // 2. 定义路由
8 C" h, F j$ T3 B - // 每个路由应该映射一个组件。 其中"component" 可以是' d# w! N" N: A& v3 _
- // 通过 Vue.extend() 创建的组件构造器,6 r3 @& l$ [, M; ]
- // 或者,只是一个组件配置对象。
" t/ g. d6 j' o, u - // 我们晚点再讨论嵌套路由。0 S( t) {8 h8 o, F
- const routes = [+ J+ F0 e+ S$ W& t$ ^
- { path: '/foo', component: Foo },8 ~. O2 M8 W0 F2 x
- { path: '/bar', component: Bar }
, m# x2 i0 o! S1 y0 p% D - ]# N. k) B% W* b, X5 \- r' ^
-
A G" Z& f3 `% I7 f$ ~! y$ ^ - // 3. 创建 router 实例,然后传 `routes` 配置
6 T# A/ r1 N* H; ^$ l/ a' Q - // 你还可以传别的配置参数, 不过先这么简单着吧。; t+ u* }6 r6 I. g, }$ ?2 x
- const router = new VueRouter({ @5 ^" j" O6 {) B9 o; }
- routes // (缩写)相当于 routes: routes
) E2 r! Y6 @( N2 l- O - })
7 q+ n& U" p k5 k% { - ' T# M+ f/ u& W7 \
- // 4. 创建和挂载根实例。* Y* Y6 V: Z0 {# M7 ~
- // 记得要通过 router 配置参数注入路由,
1 t% I; J, m- a - // 从而让整个应用都有路由功能
5 K2 M. Z; j+ y1 E - const app = new Vue({
* T7 [( z/ R7 P6 c4 g2 g1 u - router( l, m- r: A( t* n2 t
- }).$mount('#app')3 l6 d5 a( P4 y: v! v
- 7 d0 h1 ]- A/ k( X$ N
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
4 `: L7 {- C" ^* J下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
( \% ]8 q0 T! t6 o8 ~3 ]9 p7 D# y+ ~: { - cnpm install% J! O- |$ }# D" |5 I
6 d/ ?7 T' ~- Y$ W0 ~- # 启动应用,地址为 localhost:8080
+ y5 f3 z6 q! S" R. O6 [$ J - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
9 ^& V6 Z5 \' U+ y. E& |
' f+ P- ^+ V% M. {$ f5 z7 ?6 i H" Y! y" j; Q% t
3 m9 G( O* W2 L$ Z# Q. ]
$ r+ B+ y( b' K+ q! q" G* x/ Z4 @9 R5 O
' P, s5 Q2 J. n; d. D
/ M5 y, ]3 k2 p& C; m; E4 o* a3 B
, A% W. a/ C1 r5 ~, b
' k; r# r# E: N% t; i
" H) n2 b! k i c
3 E6 ]% t$ l5 V( v$ T- X: T- T) f |