本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 4 a/ I8 a# P' [! ~3 y4 u2 o
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
- |; U# |9 d: z7 z2 ], |: TNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
9 u% F( N& v- `) n- <script src="https://unpkg.com/vue/dist/vue.js"></script>
6 c, J+ o l$ D" z9 ~7 e - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
6 n* W7 s( B" P" m1 ~9 u - 4 `$ W, b1 @4 W) S
- <div id="app"># [3 z4 h1 I& G% s" [
- <h1>Hello App!</h1>. V" o0 X2 Z9 a
- <p>
2 {4 H0 R6 s7 Y3 C* n4 R" S - <!-- 使用 router-link 组件来导航. -->
# V$ l9 F3 g/ w# f - <!-- 通过传入 `to` 属性指定链接. -->
9 z/ d: {$ N) H) h0 i# W - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
* }/ T, o4 u2 U - <router-link to="/foo">Go to Foo</router-link>
) o5 t4 R1 x9 v# n7 }& h; b- ^ - <router-link to="/bar">Go to Bar</router-link>
- |# x0 F2 {" u) Q1 h - </p>0 p6 J! M5 o2 U8 t! a+ {: E8 w7 D4 M! F* W
- <!-- 路由出口 -->
+ n) ?1 j9 `; ^; S - <!-- 路由匹配到的组件将渲染在这里 -->+ r) w/ }. y4 W( O+ A
- <router-view></router-view>
# D9 j) w3 y) E - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)1 i+ N$ P& X+ Z) [4 |, C* r
- 9 x& i3 u3 c3 S+ B" X, @
- // 1. 定义(路由)组件。
; k. l0 m1 c- v) u4 f- R5 [5 F - // 可以从其他文件 import 进来
! R- @, B, F2 E9 b7 c; ]! j% k - const Foo = { template: '<div>foo</div>' }% i6 u I1 S% p( g' _6 ~3 f
- const Bar = { template: '<div>bar</div>' }" s/ o- ?! a3 s
-
; G0 f( l- w/ l# c - // 2. 定义路由
( a+ f; o% C# ?4 u1 u0 p - // 每个路由应该映射一个组件。 其中"component" 可以是5 y& o* v* S0 n) P! i: D
- // 通过 Vue.extend() 创建的组件构造器,$ ?( |# a% a6 E: n
- // 或者,只是一个组件配置对象。
) H8 _8 H6 M" r2 v. S - // 我们晚点再讨论嵌套路由。. ]+ d( w% K9 C/ k' o: T
- const routes = [
: K M- s1 M$ ?9 Q* t - { path: '/foo', component: Foo },. z/ e6 b' n) W$ f4 J; _
- { path: '/bar', component: Bar }
0 Q9 Q) A5 A0 ?4 }% K - ]
0 p2 h- q6 k8 W7 u' U# H) R0 h -
1 I7 U9 U$ N% f0 d5 }0 g - // 3. 创建 router 实例,然后传 `routes` 配置' b; p# I3 i; Q T+ `& K
- // 你还可以传别的配置参数, 不过先这么简单着吧。8 h7 O- X4 m- ~: o# A3 F1 D
- const router = new VueRouter({
" h1 a/ a# l4 g6 A d8 d0 O - routes // (缩写)相当于 routes: routes
+ E$ ^5 U* X- V/ j9 b - })
9 B" [7 H# l1 [7 I. c* ? - $ t4 O b7 s3 R3 V: H5 A1 c
- // 4. 创建和挂载根实例。
) k# Q! g% d) k& j* k - // 记得要通过 router 配置参数注入路由,
9 Y2 |9 n7 F) [! s9 x5 K/ H - // 从而让整个应用都有路由功能
) O) x( y& x; j G( p - const app = new Vue({
) w' s! M* r2 `' t3 R - router# O3 [0 K( x- q2 ]
- }).$mount('#app')
. B* |1 H7 L3 l. I5 N. D* C# Q6 W - , I: E: d9 ~. r% [( o
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 1 z$ @: u& [/ W) n5 b. v) L
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm: v/ g- X2 M# d2 s% B$ C, z
- cnpm install
4 _+ C' A9 @1 \ - / h/ y' I+ Z: Z" n$ E
- # 启动应用,地址为 localhost:8080$ C: ?, v" L% Z+ `
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
+ X, ]$ k- g" K( @1 X! a5 U$ c L c+ A
; c# p; a, z" T. d% r
( m' F: M" K7 j. P* v
3 g; {$ z' V" \$ e# @- w' b5 u
0 u; E* x, r2 |7 m$ o2 K) K
( `6 m1 q' M/ X( \9 q* [4 h) N z! N8 s; G3 @6 \
: w7 k" e# h5 k
5 ?0 a8 D. B$ ]0 {8 m8 N/ T
) ~; y% y* T+ o8 _3 g2 }) a0 P! j0 U* i* ]5 v8 U
|