|
本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 ' O) t6 J; W, f- j ]
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
- @7 d- ?3 c- i, i( J1 B( x" @NPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码/ [2 z3 N3 `) [
- <script src="https://unpkg.com/vue/dist/vue.js"></script>0 y. K4 t! U- X: V5 y9 l' ]
- <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
- b |& y9 i5 p4 V - * Y: A( r/ ~0 o2 u
- <div id="app">+ m( a/ N2 K. \
- <h1>Hello App!</h1>
. _ s$ N8 m! g/ l+ N5 d' i7 `! I - <p>( \" i- z% m, W Q2 W( C
- <!-- 使用 router-link 组件来导航. -->
) n8 I- u, w* f - <!-- 通过传入 `to` 属性指定链接. -->
# ]5 [* _% }; r+ a9 l - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
5 R1 a9 g3 ?$ s! c* `& ?' c2 e - <router-link to="/foo">Go to Foo</router-link>1 J! }! G9 |! u# Z& B) L" O: S$ R
- <router-link to="/bar">Go to Bar</router-link>
9 c6 _7 ~$ p# M3 h - </p>
& N. ]# p8 P2 f: y - <!-- 路由出口 -->$ |0 u4 U' W& f. @) n$ w; K
- <!-- 路由匹配到的组件将渲染在这里 -->
! c( l7 H" O, O1 h) A" e8 j9 p - <router-view></router-view>
, T) F4 {0 J/ L3 l% y: @ - </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
1 f8 s4 A- K3 s0 S! q" o -
. ~1 o$ o! X3 Q - // 1. 定义(路由)组件。
k7 z; u: ?6 c7 O6 z% n( { - // 可以从其他文件 import 进来
; J1 b8 ? o Z& z }) S/ w9 t% W - const Foo = { template: '<div>foo</div>' }( n5 d9 C3 Y1 K. G* @. M, L7 X* H5 i
- const Bar = { template: '<div>bar</div>' }9 e6 |- N4 q Q$ R5 s# J# y
-
% t! J! b$ P' b. ~1 O+ J! E - // 2. 定义路由/ ^9 X2 |+ u3 Y) V8 Z4 [" a% {
- // 每个路由应该映射一个组件。 其中"component" 可以是, L- K1 ?7 W) D' [: V3 n! C9 N9 [
- // 通过 Vue.extend() 创建的组件构造器,
2 {, U' }0 ]* S2 @5 [' q1 K5 w& J - // 或者,只是一个组件配置对象。
8 X7 _5 [% J/ S, V, [ - // 我们晚点再讨论嵌套路由。5 t3 J+ y$ z% X% M
- const routes = [
: o* W8 U4 Z7 R: z! X - { path: '/foo', component: Foo },8 l. @2 Q7 B5 C) \: F- G5 Z5 B
- { path: '/bar', component: Bar }" E) i# y0 d$ \2 n9 _; U$ h
- ]
; `, h3 G R! j4 k" Z6 V -
( G5 v) i, }$ r& O; ]: S5 ~4 Z - // 3. 创建 router 实例,然后传 `routes` 配置
) y' s3 t& o4 A - // 你还可以传别的配置参数, 不过先这么简单着吧。) A# `& G& y( ?! Z
- const router = new VueRouter({& K. v5 ~$ f# x# h& d u: V+ z& e
- routes // (缩写)相当于 routes: routes7 d# ?" F; N% F% L0 c
- }): n7 }- f- k8 V: K7 [6 i
-
& ~' n. L; s4 S8 p - // 4. 创建和挂载根实例。
6 t$ s/ e! X% Y4 t - // 记得要通过 router 配置参数注入路由,
8 W) X3 G) I- ? - // 从而让整个应用都有路由功能
+ e% B- O& p. c - const app = new Vue({, |# d- q% U m+ P2 D# R; H
- router
* T$ ~) o6 W7 [ - }).$mount('#app')8 [) r6 |$ M) V4 ?$ ]
- ! u- E+ [6 y9 G: f& ~# L$ G, B8 u1 s
- // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
7 Z* v1 V3 A( p; v# n" Y下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
& d+ e0 D4 F9 L2 q. I r - cnpm install1 Y2 ?/ G, W, V8 n5 q
# h$ a7 J7 G& k1 R+ v- # 启动应用,地址为 localhost:8080
0 H/ k `, s1 F6 b* O - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
! D! @5 u# B% e7 A: o; p+ g0 Q0 I+ l% @) ~! f
, T @( Q0 Y2 r7 U& x2 y1 F- c2 ~1 J( q1 Y. b% l8 J( `# i* |
# p3 @1 k O; F, c5 k% h- y, U; \
q. ]- J/ Y, L% W6 q
% H p1 F+ [/ d9 @5 v
0 j4 `. I- U, c' W; d# L1 E q: Z
2 E w' @0 L) T4 M. \$ _
$ E8 a/ @" R1 R9 w3 L3 ^
! X% X0 K6 s+ j* k6 P A6 i- S5 n# J7 p" C2 K, `
|