|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码
& w% d9 f2 |$ a R5 j游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
% B; | u; k3 r3 tNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码
+ T* C5 ~) E h! r- <script src="https://unpkg.com/vue/dist/vue.js"></script>- }" I$ s$ ~( L# {3 \
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
# H# `) Q: B d7 r- @ - : a' }5 h, V M# F+ Z4 Q# `
- <div id="app">
4 j+ R/ ~7 V+ m) q8 q- v' g# s% ~ - <h1>Hello App!</h1>
" C7 a5 F4 L3 M* B' n - <p>
* w7 t7 N- U* M - <!-- 使用 router-link 组件来导航. -->
4 }6 w9 t2 m: e - <!-- 通过传入 `to` 属性指定链接. -->
* v% h6 V5 i8 j - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->/ u# q# G9 T5 ~+ L7 G3 T8 ]& t
- <router-link to="/foo">Go to Foo</router-link>
$ }6 |7 u8 o1 J# Q) n2 r, A& }' A/ | - <router-link to="/bar">Go to Bar</router-link>
+ O8 v5 P7 P/ \. n- J) b, c - </p>
9 ^. ?3 M1 h3 |# Z - <!-- 路由出口 -->
9 L5 E5 o/ ? b8 ^4 ?7 h* l' ^1 M - <!-- 路由匹配到的组件将渲染在这里 -->
6 @# Y* t- x1 F3 n* ]) v8 Y - <router-view></router-view>
4 s) ]( R. U' C0 t" O1 S - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)+ H3 y6 W9 |1 d4 p- X* p, X4 r
-
9 m! A. d+ Y5 Q1 [/ W - // 1. 定义(路由)组件。
0 o, i. t! \. x$ | - // 可以从其他文件 import 进来
5 N% @* U$ n4 P& _$ M+ D# Z - const Foo = { template: '<div>foo</div>' }
) o0 x/ |7 {1 Y4 \0 I) @% U - const Bar = { template: '<div>bar</div>' } y- R5 |# E& s- f1 O
-
" J& K6 Y% v# K1 G: h& r - // 2. 定义路由
* J5 o0 {# Z2 }( [! C3 o - // 每个路由应该映射一个组件。 其中"component" 可以是! Z4 c+ f1 S% d
- // 通过 Vue.extend() 创建的组件构造器,/ `( n& J; a0 z8 g) C
- // 或者,只是一个组件配置对象。
% |2 k3 r* L) x$ e) M - // 我们晚点再讨论嵌套路由。
: j+ Y: m+ D: W' U1 G" U6 v. m - const routes = [
|6 ~" r) u, ] z; ` - { path: '/foo', component: Foo },
4 S& [" @' X! o - { path: '/bar', component: Bar }5 k& _' N9 l3 S, Q/ B7 f7 S0 A9 E% z
- ] v( x! {# ^, O u, D! U" s
- 6 {& a- ~- m5 ]% D
- // 3. 创建 router 实例,然后传 `routes` 配置
0 [4 e4 B7 q1 s- u7 ~( i - // 你还可以传别的配置参数, 不过先这么简单着吧。
& `2 C& o# S# Q# k# f/ y1 g - const router = new VueRouter({
( l; _$ A+ w, d. s - routes // (缩写)相当于 routes: routes
; l0 [8 s0 E5 s- M - }). ^1 G& Z$ H* k
-
: M" [4 s3 U- L3 R4 v+ ] - // 4. 创建和挂载根实例。7 h& [2 e& H+ Q1 ^9 [" H
- // 记得要通过 router 配置参数注入路由,7 Z2 ^! h( C% y( d# I% F; A6 n
- // 从而让整个应用都有路由功能
( t' b# g2 ]7 `9 j& Y - const app = new Vue({$ L6 P( `' {, Z% t6 ^4 f+ m
- router
X% B" D0 f: b0 W' Y. p- f% u( \ - }).$mount('#app')! H1 M+ u' [1 h' x- d0 J
-
: y3 }1 _' i6 ^* z$ S! r - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 ! U% ^/ X: q8 R. `& I, i5 s
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
4 ?- ~. p1 f, y0 n - cnpm install
3 [1 x% p- J, v3 f- e+ E
# O: g$ W# T% [: q. l. o4 x- # 启动应用,地址为 localhost:8080
% g) X4 N/ x- |& ~; R- J* |& R - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:: {3 z- ]9 X* M0 A* w- `( Z& W% V# v
4 j4 s# \/ @8 q( ]. z( r8 G) \- Q
* `6 K# h; ?3 u* Z" I1 o3 [% n
) y9 G! F* g0 F V1 B, @
5 t/ N8 l1 r) P% J0 E& l: a. X* s$ Z; `/ B( } H- f" [- @
# ]: P7 f. v8 m) n/ e0 Z6 v; H9 j" p/ l
1 e+ | K' f% q. p7 H2 d. X' F' V( E% [2 \) R1 X
3 B2 I, e" |* i7 n4 _. O# v) ~1 P( r
; E+ ?3 c# L9 R0 w5 y# s0 J
|