|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 ! c. G+ ~6 G' d @; j
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 5 H; e8 M, Z4 `4 h( h1 [
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
- W$ B) E F0 m: m, k6 |5 S3 h- <script src="https://unpkg.com/vue/dist/vue.js"></script>. S. R- U( ~! A' y
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>4 m6 }. V/ K6 B3 j% p8 G
- 9 t$ m- K5 X( c$ J4 Y p' Y, U
- <div id="app">/ \4 k& _" b2 H" R% j
- <h1>Hello App!</h1>% Y1 `/ S7 Y; O+ e* L* q- J7 Z
- <p>" O! j6 T- [1 d& K- d9 @
- <!-- 使用 router-link 组件来导航. -->
% d% ?% D7 S; M8 T) J - <!-- 通过传入 `to` 属性指定链接. -->, i& I) U2 c; m" ~! x, a
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
6 I6 S/ u6 L Z! S1 j( `: ?7 ]; M - <router-link to="/foo">Go to Foo</router-link>, D g; u1 \9 C) |. f! ^1 A
- <router-link to="/bar">Go to Bar</router-link>1 J! J9 Q7 u" y
- </p>
! i2 j* m" }1 _$ t - <!-- 路由出口 -->$ e5 l0 Y7 k9 L+ K6 h
- <!-- 路由匹配到的组件将渲染在这里 -->$ u; Y( W J8 s6 x
- <router-view></router-view>. Y$ r* {* C1 i6 L2 S
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
' ]6 V. E4 R1 o$ C* x1 X - 1 K) k" D' t7 v& J1 I, P/ Y9 l! v
- // 1. 定义(路由)组件。2 G5 Z; B, ]3 R9 s
- // 可以从其他文件 import 进来
$ M8 A4 O2 S$ Z' [ - const Foo = { template: '<div>foo</div>' }: K! R1 S( b- S- w5 z% x' o
- const Bar = { template: '<div>bar</div>' }# C# f' M' ?/ d5 c' d
-
5 n5 w/ T, G- d' l - // 2. 定义路由
3 w6 q: v) m% c0 L# z- ?* Y - // 每个路由应该映射一个组件。 其中"component" 可以是
% O. {* K: R% ? - // 通过 Vue.extend() 创建的组件构造器,7 w( {3 g& u2 O( V
- // 或者,只是一个组件配置对象。( [ u* x2 h2 h# ~& p, k
- // 我们晚点再讨论嵌套路由。0 b; F8 i1 n" f, A0 E, M
- const routes = [
2 g- q/ ^! q) L1 b - { path: '/foo', component: Foo },
1 w7 A. T- @# o5 J- c* ]: _8 \8 t - { path: '/bar', component: Bar }
% h- N) j) d! ~1 m k - ]7 R" w+ Q! a2 C" H& |( b2 ]
- 4 `! O1 ~7 b2 ~7 Q! h, H0 U3 c+ S
- // 3. 创建 router 实例,然后传 `routes` 配置
x- l' K5 O$ O6 j% ^% E. | - // 你还可以传别的配置参数, 不过先这么简单着吧。
3 _3 T0 k' }& k: d3 M1 u - const router = new VueRouter({" \ x/ x2 t# [8 g( `
- routes // (缩写)相当于 routes: routes
- L% s5 g+ v( l% F( o& I+ ~ - })3 B6 ?- \# N5 y6 {6 Y$ }, |
-
) _8 [+ Z, V( O9 Q# l! j( y9 i - // 4. 创建和挂载根实例。: O7 D- z+ E' n& \$ n) K, t
- // 记得要通过 router 配置参数注入路由,$ u' [0 d0 {! F# m1 u9 x; x# b( H
- // 从而让整个应用都有路由功能 p: C5 T+ O$ X3 T& U7 A3 n1 T
- const app = new Vue({! V0 U6 ^1 Q3 y8 A$ n8 l+ y
- router2 F# ]+ m, i) `$ K( \
- }).$mount('#app')
- M: X( _5 M1 M+ h1 g" u3 I - 7 @- e/ j7 B4 F+ _
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
3 t! V3 s4 K# O+ l1 l下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm' Y; H/ c2 [9 H, i' j4 _
- cnpm install n3 a& z) A( P- P( Q. m
% c4 D. f6 {4 Y3 |+ @- # 启动应用,地址为 localhost:8080
5 @ s% B l( r8 y# V r2 Y/ |! ~6 l - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:6 T% a, m" `) H. |2 J% P5 E6 S
- Z8 B ^1 h9 j+ K) X
: \& ~ T( f6 q
: G; @9 L6 `5 [$ Y/ {" _
& k. H8 B0 r$ b8 S
( S' E7 k. |! a# V9 t6 Q
j' ^2 r% t# d8 j& R
?; @9 B# E* z" w
- D! I# F Y( d; Y
$ h5 ~9 B% ^$ V& s. j/ H" _1 s9 V. s
1 d: I( D) d( H8 F8 }3 \/ @$ v2 ~
|