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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12385|回复: 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
复制代码

0 H& p# C4 }3 N: }
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
1 u, t' l( R8 V9 Z# a& ~
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
" I  L% b% K5 |. n% ~, H
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>$ V2 p" v3 T6 F
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    " ^. W3 E3 ]4 h, o$ A
  3. ( H+ f1 a2 B2 s( V, ~- p+ }
  4. <div id="app">
    + z4 D% t/ t9 O- @
  5.   <h1>Hello App!</h1>1 f8 R7 v* g4 f
  6.   <p>
    ( W4 @$ m: `% f* g/ @
  7.     <!-- 使用 router-link 组件来导航. -->
    1 @( R4 X7 Z& }' d) @
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    4 G% R. v. i: O3 K/ s
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->/ i7 i! j6 z5 @5 |# N1 Y
  10.     <router-link to="/foo">Go to Foo</router-link>
    : Z% ^- G4 R$ O: I; X0 {8 t
  11.     <router-link to="/bar">Go to Bar</router-link>
    5 Y7 T9 }( y* n" s, _6 I4 e
  12.   </p>8 m# o& Y# t# ?" [% ?5 J
  13.   <!-- 路由出口 -->
    * D$ f) K% H* y! Z8 C
  14.   <!-- 路由匹配到的组件将渲染在这里 -->. f$ x- E8 g  J% \8 V
  15.   <router-view></router-view>
    9 c* d; d$ x7 w& A0 N1 g
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    ' ?4 R3 z/ L" w3 \, V2 y7 z
  2. . h: D$ t7 }0 d( v
  3. // 1. 定义(路由)组件。
    3 Q0 G+ t% N+ J3 J
  4. // 可以从其他文件 import 进来
    * L' w  l  l" w$ k
  5. const Foo = { template: '<div>foo</div>' }7 U5 t: D* m! n
  6. const Bar = { template: '<div>bar</div>' }4 b) Y. s- ?: Q6 m/ Y3 B( Y: k) I

  7. & [: o  F0 p# ~1 t' ^* }  B! k0 X
  8. // 2. 定义路由
    9 D$ ^: x! t2 N8 F
  9. // 每个路由应该映射一个组件。 其中"component" 可以是+ ^" \0 r( G' _% c6 _; X9 K( s& T
  10. // 通过 Vue.extend() 创建的组件构造器," I  p) E" ?* h" t
  11. // 或者,只是一个组件配置对象。
    ; o2 w$ Q  ]0 z% M  _2 [3 x
  12. // 我们晚点再讨论嵌套路由。% I- s7 U2 E+ \8 ~0 g
  13. const routes = [& b7 v( W1 H1 G) r0 j) x
  14.   { path: '/foo', component: Foo },  q2 t) D! O6 P
  15.   { path: '/bar', component: Bar }
    : g2 n# u1 n* D% B5 U# X
  16. ]
    ' U. X" L- x9 N: x0 i6 S
  17. & k, U  T  D3 u
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    9 G- i5 e. u6 z. j0 ?7 v5 @
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    ! D6 w* [% E7 U9 a
  20. const router = new VueRouter({
    / \6 a$ P0 ~, e( O, j% o# |  k
  21.   routes // (缩写)相当于 routes: routes0 V) q) ~+ `; m* j4 C
  22. })# m2 t7 F0 }; Q" ^* ]
  23. & g1 l3 G) w: F" }8 ^4 C: s, X+ c
  24. // 4. 创建和挂载根实例。
    . a# q* P+ ~& o6 Y( A  t4 `
  25. // 记得要通过 router 配置参数注入路由,
    : B1 ^3 X2 ?4 u7 ]" `! V0 O4 ~9 _
  26. // 从而让整个应用都有路由功能
    ( A# [6 s, A, c% p! K
  27. const app = new Vue({
    1 \. f" p) K) z  \
  28.   router
    * o0 `% G/ M# x# C" }6 V
  29. }).$mount('#app')( e) p# J; D5 i! F; ?1 j- l3 g7 m8 ?

  30. ; W# [( q# e% ^) @1 z$ H2 Z
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
3 Z% L, D+ D5 Z9 U
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    ! Z- @. c" a6 w; r
  2. cnpm install$ O! ?* P- \2 o( X6 V  X  K

  3. 4 s* _9 N& S' V  n$ |
  4. # 启动应用,地址为 localhost:8080
    6 \0 p4 Q, a% v7 Y
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:' v0 {/ h1 U$ J: E' V& [6 U  w
  1. cnpm run build
复制代码

: F+ l) p% t( c1 c- j" h$ Y7 C, ?) y2 \# F8 {( `0 w
/ g3 ~6 L& @3 `8 ~+ f! N% a
0 V: n4 l- c* j

( [3 H) y: v, G8 v9 J; f
; |6 M  c8 R. g8 v- p( v
! b1 F6 V$ b& g! i9 q1 o9 D/ {
- T4 }; g( y; z% @  l
; }. V) Z% B% w% l! C0 }3 v5 ?( k0 G
+ L5 |3 |, K3 Q! \- T+ N  T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 11:02 , Processed in 0.145719 second(s), 23 queries .

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