|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
) e5 _& S$ d% }& b+ e! l9 h/ A游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 ! o0 X J8 [9 Q( Q+ A N
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
0 c; z* @3 K7 q5 M- <script src="https://unpkg.com/vue/dist/vue.js"></script>
. I' k7 m& l0 O) n - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
6 n. A" ^! F3 u: b# I3 k5 r -
# c! {( `. _! W5 K - <div id="app">
# G4 U6 C# b) K7 @ - <h1>Hello App!</h1>
7 ~$ ]4 [! e: |9 d0 E6 S) I - <p>' x/ k: N3 K8 l* g) L8 v
- <!-- 使用 router-link 组件来导航. -->. P- x- ?/ ~* L
- <!-- 通过传入 `to` 属性指定链接. -->+ t+ @- c" N, }
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->; ~* |+ m9 e% J1 ^( }
- <router-link to="/foo">Go to Foo</router-link>
5 n4 R6 C# u! i4 y - <router-link to="/bar">Go to Bar</router-link>7 B, Y! ?" X: f, ^0 {, v) C1 c
- </p>, Y. u* T+ f3 |5 a2 t) |3 |
- <!-- 路由出口 -->) `% w( i. B( g4 a( G E
- <!-- 路由匹配到的组件将渲染在这里 -->
. [ V$ @$ Y/ m, m% y - <router-view></router-view>
6 E) c% @1 L; q; i - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)" I4 o' d: v- _9 _% {" U
-
' {# l) g% [% K& v - // 1. 定义(路由)组件。
# a! w) E7 C/ g/ b- `1 Y - // 可以从其他文件 import 进来' |" m$ s$ T" Z' C3 {: u
- const Foo = { template: '<div>foo</div>' }' J2 k3 _( ?& B+ U4 f
- const Bar = { template: '<div>bar</div>' }
: }8 K: p! T5 I# A( X" s |) A - . ?! `# z! i4 Z0 u8 }' ^
- // 2. 定义路由
2 ?5 A- o+ a/ ?! \ - // 每个路由应该映射一个组件。 其中"component" 可以是
Z' D7 V b5 q: ~ - // 通过 Vue.extend() 创建的组件构造器,
$ e8 ^1 T6 w8 v2 C4 i) b - // 或者,只是一个组件配置对象。' o: W; P" k) W0 y$ O/ @
- // 我们晚点再讨论嵌套路由。% @9 d& [2 g9 T/ w& I% x
- const routes = [
$ l" P' ?3 Q6 U& A( ? - { path: '/foo', component: Foo },0 F9 y3 t; `% Q! G7 A$ C
- { path: '/bar', component: Bar }
) c9 Y& G2 |% G2 y' x - ]. E3 V5 x( J$ \! w9 P
- 8 B% |( N) ]7 c, u
- // 3. 创建 router 实例,然后传 `routes` 配置% i% N) [ _0 u
- // 你还可以传别的配置参数, 不过先这么简单着吧。; G/ p" Q F# ?- b( y. A1 O
- const router = new VueRouter({
- ]8 T5 S1 c, y8 V5 F' P3 [5 b - routes // (缩写)相当于 routes: routes$ }! I+ d: o. {3 H! c) H: ]+ V& m
- })+ [2 P' [ ^1 a3 r$ W+ s: F4 Y1 t
- . H/ e; O+ G& E6 ?& c* o
- // 4. 创建和挂载根实例。
' J* {8 R; F" r - // 记得要通过 router 配置参数注入路由,6 M1 W8 _/ [# J- E$ t
- // 从而让整个应用都有路由功能( T1 j! L0 ^& V/ t, Z
- const app = new Vue({
' D( B0 G8 {) y - router5 U) U. B' R/ ~. B+ U
- }).$mount('#app')9 x& z9 m8 D1 [' S4 `$ n
- + n# U" \/ Z9 G1 g8 n" ^
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
8 G4 S" b2 x" O( ?- W: d1 F8 N下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm* F6 H2 |4 ?/ P) q; l! U% r
- cnpm install
9 s) ^* Q* V R# c, P
8 l% F& |. A1 V1 k" p; p* t. z8 l- # 启动应用,地址为 localhost:8080
2 y# I% {8 i1 P. V4 | H3 n9 J6 f - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
( a( S" L7 e# J! o6 E6 k4 \; R( E5 T
7 R) f! T9 A' Q+ ` s9 j2 i2 W: n. I& K+ W
2 s0 x# h+ I1 M& X& }1 j
9 M& G& P1 |% x, Y( w% ]: ^; M P* t( T
) h4 ]! A0 O: u
. q# p' m8 c( C3 X* z/ v6 N6 d Q, T5 j3 l8 {0 ?4 T$ M; N
5 F) n6 l. g. x! C! Z. Y( ?; o
: ~6 R" _6 C, G' A( F
W0 w4 g o! L J0 u. v |