本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 安装1、直接下载 / CDN- https://unpkg.com/vue-router/dist/vue-router.js
复制代码 " P. c( \: W, S, B
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
$ R4 b. s C! f4 BNPM推荐使用淘宝镜像: 简单实例Vue.js + vue-router 可以很简单的实现单页应用。 以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示: HTML 代码& U4 N: D7 W+ Y/ v2 k, ]
- <script src="https://unpkg.com/vue/dist/vue.js"></script>
& r( c' z* ]& _. R E9 E7 J% L - <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>, v! i! \0 ]2 Z) P% a: `, P0 N- x2 p
-
7 J7 t9 X) E7 @. m - <div id="app">3 T/ v, L) n- i: N6 Z5 @
- <h1>Hello App!</h1>/ t! r& ^, f, u( i
- <p>
0 G- y5 x1 J- s0 ] M( @ - <!-- 使用 router-link 组件来导航. -->
5 `6 N6 \% e1 {. `+ V - <!-- 通过传入 `to` 属性指定链接. -->
% j2 B1 I7 C5 \0 |, B - <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->! I+ m6 m5 Z8 P2 y( S
- <router-link to="/foo">Go to Foo</router-link>6 R3 Q* U) M Q
- <router-link to="/bar">Go to Bar</router-link>
' z8 b% @8 F' `8 R3 I1 r) x - </p>
" M8 y' B+ G% Y - <!-- 路由出口 -->* Q x& m3 T' [4 q+ ~. j/ v, d
- <!-- 路由匹配到的组件将渲染在这里 -->3 L$ s* k5 N, H, N9 M! t
- <router-view></router-view>) f) j8 ?3 }1 Q* ?/ @8 Y# @
- </div>
复制代码 JavaScript 代码- // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
- q) q! Q/ q y, [ [ -
2 r+ p5 O; m* {! O5 y- z - // 1. 定义(路由)组件。2 R. e& b [3 z' f
- // 可以从其他文件 import 进来
, ~( b$ ^ Z# f5 Q - const Foo = { template: '<div>foo</div>' }: C1 h7 m/ \( }/ R9 i
- const Bar = { template: '<div>bar</div>' }
, v: ^) a0 m; _2 W# ? -
& o$ w0 P" e I; x% t7 C; D - // 2. 定义路由% T+ f5 Z! ?; i
- // 每个路由应该映射一个组件。 其中"component" 可以是6 {! g/ ^6 @* G( E6 R% t
- // 通过 Vue.extend() 创建的组件构造器,
% P" m: H: H* H& t t1 z6 \0 g3 s( ~ - // 或者,只是一个组件配置对象。& n: U% |! \/ w
- // 我们晚点再讨论嵌套路由。# M7 ?4 ~& x7 B U* s9 D
- const routes = [/ [4 n% _$ F1 h% Z# j, Z B
- { path: '/foo', component: Foo },3 V6 W3 F% Y, U# e2 ?7 p2 ~7 C9 p
- { path: '/bar', component: Bar }- v# h3 Q3 k/ @& w# n( S
- ]) N: Q: r+ \3 f/ ^7 d; O# P
-
" k3 U5 O9 l+ P' |5 x - // 3. 创建 router 实例,然后传 `routes` 配置% F/ }' `( V ?7 G! z2 p I
- // 你还可以传别的配置参数, 不过先这么简单着吧。2 ?/ w9 L/ j2 Z+ V' {2 s# t( `; e
- const router = new VueRouter({) u/ b5 j8 b0 w
- routes // (缩写)相当于 routes: routes
, T- H0 p" X# j I2 U - })2 L) j$ S( I" h( H. |
- ! ^. m- P4 Q4 u: c, i R/ O, m9 P
- // 4. 创建和挂载根实例。
6 k- D1 B* R% w) k) ^& U - // 记得要通过 router 配置参数注入路由,. U6 P4 |8 r3 g+ i3 b# A1 J* ?, C
- // 从而让整个应用都有路由功能
% H; q1 _& v# E - const app = new Vue({
2 J" v0 w3 _$ x8 T q8 H - router
2 t) ]% L! Y7 ]! `5 u8 m" `- t& R - }).$mount('#app')
$ f$ B+ R8 Q; d5 G" s -
% e* X' M3 Z4 ~# _% O - // 现在,应用已经启动了!
复制代码 NPM 路由实例接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码: 游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0 8 {, d1 ~% ]. b& F
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令: - # 安装依赖,使用淘宝资源命令 cnpm
: k! D( F! }0 s1 Q. x" y - cnpm install2 n" t- n7 U7 |5 V# T, s
: Q$ u; ^! b0 `1 C! i6 ~* F- # 启动应用,地址为 localhost:8080
8 i3 D$ V$ j. a1 ? - cnpm run dev
复制代码 如果你需要发布到正式环境可以执行以下命令:
* Q/ O e& U- ^9 S( v+ p
$ l/ N" W! J2 w5 |$ J% Z. u" y$ K* s
1 f/ n2 g9 P9 E
/ l. c' ?) E7 w" H B! S9 t
`. \3 [7 o' b# c2 `9 ?; p
R. }$ [& T. c# ]* i( d4 O1 L' J: T' U- L0 r
/ K" g9 \ X* f, W7 d0 l; k) |' I1 F4 w3 }6 F( `/ G
$ A. v$ [" E* _2 \' w$ e' ~6 {- h. ]( J. X
( |& }/ b8 u" n+ O- c! J, A# c# S |