您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10648|回复: 0
打印 上一主题 下一主题

[Vue.js] Vue.js 路由

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-4 11:44:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本章节我们将为大家介绍 Vue.js 路由。
Vue.js 路由允许我们通过不同的 URL 访问不同的内容。
通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。
Vue.js 路由需要载入 vue-router 库
中文文档地址:vue-router文档

安装1、直接下载 / CDN
  1. https://unpkg.com/vue-router/dist/vue-router.js
复制代码

& N7 n! T6 {. O) \6 h; X2 y
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

3 i  j+ P) x9 G9 |. O& ~NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
% X4 E5 v7 h+ ]0 c# x
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    9 I+ C# j8 B9 p9 s2 o: O# }- ]; \
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    7 \0 h  n+ N! r4 ]9 J% S

  3. 3 Q+ y/ S& N# J$ p: o
  4. <div id="app">* X* S* P3 M: e  Z8 f+ r
  5.   <h1>Hello App!</h1>$ l4 a* l6 _$ b9 @% m
  6.   <p>
    3 v& L+ k3 S1 t7 a# s9 O
  7.     <!-- 使用 router-link 组件来导航. -->
    2 O- |; I. p4 n! r' P
  8.     <!-- 通过传入 `to` 属性指定链接. -->- ~/ y, J& z; B; ^4 D  E$ Q
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->! F- r: A1 J" x' H( |
  10.     <router-link to="/foo">Go to Foo</router-link>
    , C7 n; k6 E5 q* _5 a4 E: S+ N
  11.     <router-link to="/bar">Go to Bar</router-link>
    6 J1 w8 A. S- Z9 ]+ K! I! F
  12.   </p>! X* U" i" G  ]- X3 v
  13.   <!-- 路由出口 -->/ L0 G# p; l3 k- o
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    ( q' Q! F% E% r5 h3 T+ w: j/ _
  15.   <router-view></router-view>0 ~/ z  Q  N# B9 ^+ `" j
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    ) N0 j3 T9 Y4 H% m/ `

  2. 9 H4 a! o: X) O! W( U$ `
  3. // 1. 定义(路由)组件。& g2 q5 v! u) W  H! i& L+ P
  4. // 可以从其他文件 import 进来
    . p% Y. w7 q9 F
  5. const Foo = { template: '<div>foo</div>' }- j  F; T  J2 N6 l8 C( T+ \& E
  6. const Bar = { template: '<div>bar</div>' }
    3 x# o8 F1 |) l% h

  7. : o5 A8 u" j6 x# n( Q( G2 e
  8. // 2. 定义路由* _# }7 g+ _' s: ?
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    3 x8 R1 y0 j4 O! F
  10. // 通过 Vue.extend() 创建的组件构造器,2 b- n! O) Z+ v5 _. n/ Z5 v5 u
  11. // 或者,只是一个组件配置对象。  H- W8 `7 X1 J6 U
  12. // 我们晚点再讨论嵌套路由。
    - U; q, K1 f( i5 |" v0 {  T
  13. const routes = [8 D0 ?/ U/ B- W/ y" l5 U% P1 i8 n5 `
  14.   { path: '/foo', component: Foo },2 Y4 S7 U4 V: }0 s- g! p1 h3 o
  15.   { path: '/bar', component: Bar }
    1 I0 b4 ~0 d* z9 G+ D8 k8 u
  16. ]: d1 s6 j0 X4 l9 f

  17.   G" |4 T7 ^& {& Y& g7 r+ q
  18. // 3. 创建 router 实例,然后传 `routes` 配置1 O& f$ G! t0 E
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。) n6 C: C% H$ ?( ]' U! ?
  20. const router = new VueRouter({6 I4 z3 ?! H( `1 a$ Z3 n
  21.   routes // (缩写)相当于 routes: routes
    , u) Q4 [0 Y) {$ F9 m* T# d
  22. })6 t/ `4 e! t! O  Z4 `

  23. ! d2 c" }/ X4 ]4 w
  24. // 4. 创建和挂载根实例。5 T, @5 c- w8 @0 u% M0 \; h0 |
  25. // 记得要通过 router 配置参数注入路由,
    5 G4 G: B% T$ v: X% s2 J
  26. // 从而让整个应用都有路由功能5 s. X0 o& q& O& `" f9 s" p  V2 u
  27. const app = new Vue({
    , c9 r1 N, R0 V3 y# X& z5 O2 L" t$ f
  28.   router2 N1 S. ^7 k; a* W
  29. }).$mount('#app')2 \+ S) y% J9 W! n

  30. 1 f5 @& Y  O" L) n1 F6 C4 a
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
# ?) v4 ^: j" C% \% J0 u: |
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm9 P+ [8 o9 Q  o" f7 `) N
  2. cnpm install
      u0 i  P1 i7 I) s% x% M2 M* C* Y4 N( M

  3. / {; s& F' g4 q
  4. # 启动应用,地址为 localhost:8080
    ; \6 h% g6 m3 _5 x
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
8 ?, l6 P5 f+ B/ {
  1. cnpm run build
复制代码
9 T( }9 [; ^* @1 B

; B: \7 [$ x' I# S, V" |
7 O& x2 c6 X! P9 y5 L5 J! c% c# x! U4 b% G  [  o0 A0 y* L

3 U# W- ]& N, ]& f
' \# q. p, U: I: `" F% V( I' p0 ]- p6 F2 u1 p* \3 u1 _
: V; l% u! Z0 q( a
  N1 ^" [/ [5 r" R- y& s

% v9 E& j, M6 i1 D7 F: x* @" W- ^2 V) \/ w+ i4 E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 15:41 , Processed in 0.122740 second(s), 23 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!