|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 - d, v5 N: d. V
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
* l7 L8 E, ]' h. G; w8 i* F, {" {/ XNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码4 ^. K' ^2 s* S$ n
- <script src="https://unpkg.com/vue/dist/vue.js"></script>: R8 i! ]9 H$ {( c
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
/ m% w, K. W0 O' ^ -
6 [% e$ w/ b* H' C7 k6 G9 S! @ - <div id="app">
" _& x @7 m+ i- i' f - <h1>Hello App!</h1>
- t* A, H! I& [1 W. c$ G- L0 D - <p>, v* ], e/ D! Y' c+ c" Y2 A y2 v% ^
- <!-- 使用 router-link 组件来导航. -->; b* z% h( ]7 f/ V% t0 @' M
- <!-- 通过传入 `to` 属性指定链接. -->
) P- W" i% ?/ O$ `9 e: F# P - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
9 {3 r, Q! U2 ~: ~ r4 v8 A8 S- { - <router-link to="/foo">Go to Foo</router-link>! r q( s: v0 Z5 \+ {. ?/ Y
- <router-link to="/bar">Go to Bar</router-link>& A0 U! N$ e4 Y
- </p>! f' f w3 w7 O6 g
- <!-- 路由出口 -->* u1 d" V$ P0 M' D( b1 ^
- <!-- 路由匹配到的组件将渲染在这里 -->! T; w; T$ F* e7 u5 t
- <router-view></router-view>; l, ~. s' @" ^2 F
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
, N* y% K- y: P+ z& ~ \6 d - # M4 k; N0 y- [3 [8 G
- // 1. 定义(路由)组件。" E' T) \, i6 S4 L _
- // 可以从其他文件 import 进来
' G% C) j; a3 ~# q" x6 O$ i. t - const Foo = { template: '<div>foo</div>' }; z% D4 F' l/ {3 P
- const Bar = { template: '<div>bar</div>' }% \: Z& a9 q, h* _" u% n& [
- & B2 G% n1 x$ p. g( k1 U7 I
- // 2. 定义路由
& m- c: {8 G" }; q - // 每个路由应该映射一个组件。 其中"component" 可以是
2 Y" K5 ]& r9 r. f# ~* z - // 通过 Vue.extend() 创建的组件构造器,
" h& e' K- O, C7 X5 p! \ - // 或者,只是一个组件配置对象。8 n7 J7 ? N2 Q% Y- g9 E# C
- // 我们晚点再讨论嵌套路由。8 A) W1 ]. p; p3 |; ~& ]
- const routes = [, ?4 T; f- y: ~! Y
- { path: '/foo', component: Foo },
) [* g6 D6 o2 @% v- U/ \ - { path: '/bar', component: Bar }
3 Q7 }& E7 J/ U1 f: e, q8 l0 |% `9 I5 F - ]( y+ i1 b( e" e; k
- ; G" q7 a. `" w
- // 3. 创建 router 实例,然后传 `routes` 配置
2 R- w; }; D S; W - // 你还可以传别的配置参数, 不过先这么简单着吧。5 _1 F1 ~9 c0 s4 C$ i
- const router = new VueRouter({: C) @, j! i v# b1 L3 Y, N4 u
- routes // (缩写)相当于 routes: routes# @7 d6 z, k3 J: _8 v+ N; E4 A4 B
- })
; X- L3 [- |( a4 _( ]* @4 z* B -
* w& B! m6 D, g# j8 T& S4 [ - // 4. 创建和挂载根实例。# r. x# y- T5 ~ _! J% W4 ^
- // 记得要通过 router 配置参数注入路由,
; G1 S+ C {1 `. M: m; n - // 从而让整个应用都有路由功能
1 F* w( c, `) Z+ R( s" J - const app = new Vue({
3 @2 x6 A* ]: z ~$ @' x - router- x% Y4 {# T7 ?6 \9 C: l: Z
- }).$mount('#app')
" ~1 y/ ^$ K. u# b. Z0 e - 3 }; h, w4 Y1 p
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
, \) S, M% d3 \5 z. T/ w下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
1 [$ u0 V" Q0 S$ X% p - cnpm install% `/ S2 K' P) ]* E4 x
& b9 `1 E! |, f( i- # 启动应用,地址为 localhost:80801 t/ ~& c8 H, d+ `! \$ K5 G. n( t
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:4 i3 ?/ Q/ ]9 t; ^
; U% _; w* ]1 N
' l5 d. |' n3 T9 s
5 z# w! o( Q# [$ o w% _6 N0 n
" M3 O; v, q) L5 ^; T6 M( g* u7 P; P1 H" ?* Z) l
' {' h9 ?' M% s6 W
8 U6 U6 ~7 P- ?* B% ^& w- F+ @9 z; ]
) R( z* V3 a% l, {& K
! Z- t, @5 l, \9 E& r* y- ?+ z$ t- ]6 a. o" u
|