|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
7 z+ x9 H# f; l6 Y' j' H5 p游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 2 j- C, Y$ O0 h
NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码% x, O2 Z& ?7 T1 K4 g' b( R3 ~
- <script src="https://unpkg.com/vue/dist/vue.js"></script>$ B- e, y! l( T$ N$ [) q
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>* o+ y1 A6 n2 z: Q+ M5 ?
- 1 h" u" v8 Z( |: l% N+ T
- <div id="app">) d8 T1 b G5 d% l, H0 p
- <h1>Hello App!</h1>
- @3 d( Y/ f' J( M6 \ - <p>! P( Q# a; A! W) O8 Y* F. `
- <!-- 使用 router-link 组件来导航. -->+ K* |1 V" e$ N2 Z/ R
- <!-- 通过传入 `to` 属性指定链接. -->% C0 H/ B8 h# c5 G0 k, j
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
, x: f! n" V/ y& Y0 ? - <router-link to="/foo">Go to Foo</router-link>8 E3 L* d' F5 s! X* t6 R
- <router-link to="/bar">Go to Bar</router-link>
5 W% L f# l4 q$ d - </p>
; n+ Y7 S+ v- f3 _! i6 t - <!-- 路由出口 -->4 p& T3 J- `8 ?7 z+ ]/ M
- <!-- 路由匹配到的组件将渲染在这里 -->
) l, _/ A! N \( h6 T; ` - <router-view></router-view>) [9 u$ @, X3 y: E0 X- [! w: y
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)1 r7 r O2 z* u* M$ d
-
0 b1 D1 v$ B8 v# g - // 1. 定义(路由)组件。
; Z+ q& D7 _ @/ C - // 可以从其他文件 import 进来
, E6 R3 p4 g1 H: p" u - const Foo = { template: '<div>foo</div>' }
# I: W" u6 C2 V' S( h6 e/ k( u - const Bar = { template: '<div>bar</div>' }
! M0 i* ~- X! q; Z+ }6 s - " d: \0 E0 x5 m4 e8 {
- // 2. 定义路由, V d1 G" s+ p( P! J3 u0 n& C
- // 每个路由应该映射一个组件。 其中"component" 可以是; U( y. c u! U# U7 i
- // 通过 Vue.extend() 创建的组件构造器,
: h0 {' W2 A5 \3 \: O q - // 或者,只是一个组件配置对象。6 o% {; l' \: {2 J! }5 j* _
- // 我们晚点再讨论嵌套路由。6 @* b9 z+ d, x2 H2 `
- const routes = [
: l+ L2 p: u6 _! h - { path: '/foo', component: Foo },- p S, X" | B ?% W
- { path: '/bar', component: Bar }8 a) l( s) }" N
- ]
/ @" [" i6 u& {# \) i - - z' Q& j! D) p2 J$ k
- // 3. 创建 router 实例,然后传 `routes` 配置/ ^' \2 s5 z5 s4 Z& Y
- // 你还可以传别的配置参数, 不过先这么简单着吧。
+ L4 X& S3 Z j; Q. u0 d - const router = new VueRouter({
U3 l; X. M2 ^8 x. e1 T+ x* e( @5 U - routes // (缩写)相当于 routes: routes
) v5 b! W" S$ `+ z - })
* _" i) j' D: s -
$ ^% G& \, C" d - // 4. 创建和挂载根实例。
1 D% L; q% q, V% `- t; u* Y - // 记得要通过 router 配置参数注入路由,) p- _9 p2 U4 J- s
- // 从而让整个应用都有路由功能
" r- {* T* j) S' v) F$ J) G) j - const app = new Vue({" ~- ^5 f0 V1 M: }6 E; F( K
- router
1 w0 _4 g$ a4 `& v - }).$mount('#app')
8 Q# x/ `: r) A5 ~+ \, X: ^ -
7 H' t, c& v" f6 J - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 3 d; w0 Q$ q5 V; w1 j S
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm; f8 ^/ m5 q* ~7 k% |0 Y _ T' P9 Y0 h
- cnpm install
$ F4 L- C( i, }; ? - " V6 u3 |% n3 b, |
- # 启动应用,地址为 localhost:8080
" }( e% W9 j: ]. m3 s3 R9 q0 s - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
1 \" ]; F' _, S6 C
9 p, I. `/ _% E% e$ S6 m
1 Z+ l3 g& N# @+ ^! n
; e) L, L/ I+ L! F0 R9 u! o8 c2 [! ^- t+ C1 y: r) ^2 }
7 v! @; F! y6 m9 e+ V) P
( Q* o5 i R3 Y, T$ Y4 k _- F2 O5 b' f( [1 y
' J$ n' }' ^1 n; ]+ z. v7 v! l
7 B5 c" Q0 x4 h
; c( T {( G4 d# J, ~ _ r8 B
1 \# Q& R0 D' Q4 d# \! c |