本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 3 d' g8 l q" Z5 R, k
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 0 a$ [3 n: f# Q' t! p; Y
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码6 S- ?. t; |9 t: e( L
- <script src="https://unpkg.com/vue/dist/vue.js"></script>
$ }5 K; B( |$ L" G - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
$ ^1 y5 O. [4 ] A. Y0 ]9 _ -
( A% `$ K. _# T5 I - <div id="app">7 G+ D! w" {. r8 @' [! R
- <h1>Hello App!</h1># L+ t: }5 M( p: K8 S/ P/ E% Q
- <p>
7 G5 E5 n* j4 H9 r2 F8 e+ D/ F4 t - <!-- 使用 router-link 组件来导航. -->
# r0 _1 Y( e+ i f - <!-- 通过传入 `to` 属性指定链接. -->
- S$ c4 S4 U* g, x - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->" P% f% G5 v) ]6 W/ |' @9 `9 ]
- <router-link to="/foo">Go to Foo</router-link>3 u0 ^0 k/ N* I- T. U% {) Z- A
- <router-link to="/bar">Go to Bar</router-link>+ Y/ }) W) D% ^( m1 n
- </p>. ^2 t( s( [( R8 Q3 j
- <!-- 路由出口 -->
8 Y5 B F( @9 w$ L3 G - <!-- 路由匹配到的组件将渲染在这里 -->
4 Q2 K. a4 Q' i, L - <router-view></router-view>5 m$ ]) V- s1 k1 s/ n7 }
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter): T% _0 q$ }0 M# w
-
% a- @8 q" f! }- U6 _: c: z+ A, r - // 1. 定义(路由)组件。9 [# P5 A# H: G8 J8 j7 K% X5 t
- // 可以从其他文件 import 进来" m/ T6 D& E( d6 c: C
- const Foo = { template: '<div>foo</div>' }, c+ K" u S. I9 b, D
- const Bar = { template: '<div>bar</div>' }
% t& ~5 F" C8 v6 R5 E, [ - 3 Y( \3 t- Y8 x
- // 2. 定义路由
1 n1 N x2 q. Y3 p+ r* F4 o5 h - // 每个路由应该映射一个组件。 其中"component" 可以是
; Q/ h- k" ~, w8 n- b( {8 l1 D, S* }& y - // 通过 Vue.extend() 创建的组件构造器,/ I) R7 q) H* @5 T* X: \
- // 或者,只是一个组件配置对象。
! ^3 C, M1 v. h: [# {- T; H; N - // 我们晚点再讨论嵌套路由。' w* f# X) c' m0 X4 c. B- ]/ t8 L
- const routes = [
; e7 b( k9 K; c - { path: '/foo', component: Foo },
6 t% v$ T: _0 ^( Z) K0 q {5 k - { path: '/bar', component: Bar }: s5 d, H+ U" A
- ]
. _' ], ?- A6 y - - O# k: B Z" x$ y; k
- // 3. 创建 router 实例,然后传 `routes` 配置- H+ k! S* e9 c; }
- // 你还可以传别的配置参数, 不过先这么简单着吧。
+ Z0 Z. I0 Y: \: E P/ m - const router = new VueRouter({3 s3 K) c/ C; i) u# {
- routes // (缩写)相当于 routes: routes. Z T8 Y* g0 @# d" {
- })/ h$ g2 Q# z4 ^0 F
- % w( C, n( l9 f
- // 4. 创建和挂载根实例。# h$ {0 A+ y$ L ]9 k! P
- // 记得要通过 router 配置参数注入路由,
& F! n! ?2 D8 u) o# K - // 从而让整个应用都有路由功能' v% g% |6 Z2 R6 w( U, R, b' c
- const app = new Vue({& Y$ k7 \( Q7 O! O
- router# J5 A& I9 V% U# h) [
- }).$mount('#app')8 u, ^* E2 [, N
-
# G- Z# R' O7 M* |# q& O - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
6 s; S! j7 B8 }$ h, T2 ^下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm, P, L4 O; I" g/ _* w) f: I a
- cnpm install
1 e4 H; p& }$ u d7 w - " r/ X' Y/ t! @# z [
- # 启动应用,地址为 localhost:8080, Z* \1 e. L& J* i/ r, k
- cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
, R0 L% v% N2 y5 r/ F E8 u6 c7 E2 l S* b
$ y1 Q6 g9 h4 L4 b& h4 q; I0 u( }' r/ w9 _; M5 A. K' z
: X' Q6 U/ G; b4 _
( D& s- J( C7 v# r. O* Y% L
/ z3 e: y0 Q4 w2 ~
3 [# j0 f: h, S$ ^2 b! D" @
5 m8 W& b$ Y, i5 Q2 f
8 J+ K% W) c" f) d N5 z$ M" w* S
5 Q% B5 |% W) `, h2 v
|