本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
, U; q# [( C6 |! V6 E4 A游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
( j$ a; j- a! H% K" c+ mNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码6 ~, i$ T: ]2 x* F h
- <script src="https://unpkg.com/vue/dist/vue.js"></script>6 m) \7 [* m4 P% G* p( O
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
- { V3 i" W, l# r - i) F. q2 f* L
- <div id="app">
+ I, @" ], W4 W6 U, {( A- E - <h1>Hello App!</h1>; |2 D1 V v+ h/ f
- <p>
+ j; y f( T5 F0 M - <!-- 使用 router-link 组件来导航. -->! |, H- _- P! V6 T/ D
- <!-- 通过传入 `to` 属性指定链接. -->9 t! d' z' T. W8 R2 c& v
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
/ j8 t1 ~0 x1 j1 o9 L" r - <router-link to="/foo">Go to Foo</router-link>( E% `8 E' L* Z3 X/ u
- <router-link to="/bar">Go to Bar</router-link>
! \0 d" G8 F4 D# r& T# J U0 t - </p>
1 O1 `$ f* W$ C5 B Q2 z1 L" M' e - <!-- 路由出口 -->
; O/ t' C3 X$ S y( T4 f3 ^) Y - <!-- 路由匹配到的组件将渲染在这里 -->
% V* Y- k, ^. e* m) ` - <router-view></router-view>: p" G0 }) i0 l
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)0 Y+ U/ ]$ L. i6 U p& n
- * x( K$ Z: ~( X5 A. q% d( I) D
- // 1. 定义(路由)组件。
2 \$ R8 {. u7 g) t4 L - // 可以从其他文件 import 进来7 Q$ G$ z4 G8 t, U# n
- const Foo = { template: '<div>foo</div>' }
& S+ M4 |8 o& |& B - const Bar = { template: '<div>bar</div>' }
7 ~4 q8 T: ~2 W0 T - 9 V! w, b; Q. R) z
- // 2. 定义路由
N- m& L# { _# E# l9 ]9 g& _9 a - // 每个路由应该映射一个组件。 其中"component" 可以是
/ h- i: E8 k/ C3 w+ W! x - // 通过 Vue.extend() 创建的组件构造器,
7 W0 ]' n5 L4 q - // 或者,只是一个组件配置对象。
: k/ B! d0 b+ j. Z, i) l0 b/ k - // 我们晚点再讨论嵌套路由。7 F" T( j6 z. h9 {' H
- const routes = [8 ]' I( _0 a9 F' R1 _. Q' U( p
- { path: '/foo', component: Foo },
, a |9 R2 n2 s* Y. c - { path: '/bar', component: Bar }, |( ?- }( ~3 J8 ?
- ]
2 N/ {. L( ~+ \# I -
4 ^/ [ Z @; N1 s - // 3. 创建 router 实例,然后传 `routes` 配置
2 ]6 B* ]& g9 O. B7 @ - // 你还可以传别的配置参数, 不过先这么简单着吧。' A% ^( R7 w+ B
- const router = new VueRouter({
M8 q$ R, x f, G - routes // (缩写)相当于 routes: routes5 D/ W5 c, G& N6 A# E
- })/ z# X$ f: o9 f9 Y$ h. `. h6 P, n
- - a" a0 U' {* m
- // 4. 创建和挂载根实例。% S5 m4 S M' v
- // 记得要通过 router 配置参数注入路由,% a) n5 `3 v+ H, b
- // 从而让整个应用都有路由功能
6 z, h/ n* _2 i( l" s - const app = new Vue({% g' q# X* h; t
- router, H& Y# A8 u J+ ?, {/ B
- }).$mount('#app')" w( u+ V( [% t* S! v! c8 q5 k
- # g( L3 s" n# q& V
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
. \* u' `" T2 o9 i& g$ U W& ^% \& P5 k下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
6 v% e7 w1 v& c+ [ - cnpm install
. a3 P$ ~: C* i - # Q; o+ ]/ X3 C8 m E
- # 启动应用,地址为 localhost:8080 W+ W9 ?) C& l( `
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
7 f5 _; `- h% G! c7 m, D/ K: _$ k% n, k$ A
9 B+ a3 T- B5 U
* C- h0 U" l9 ^( a. R# m' ~
3 m/ \' h8 r4 @+ {1 M' s
0 H( s. |( ~2 h$ C/ Q) e7 {( y8 Q5 U7 o: X2 H# p, d
6 [6 q; @# N* r; ]/ a3 q/ _# Y
* ^5 k+ c4 R- q
( p- J2 Y% \( g9 f& a- a9 [$ \8 ?. V2 @; E; A
/ w/ j' U& ~- ^$ ?1 n8 X6 D. z |