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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

, k# v3 R2 X/ P
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

3 a1 z' [, K' m2 ^. ]/ n1 wNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码1 b1 P! U3 s, H3 `' q
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>6 E7 \: ~7 ^) Y
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>) Y4 K; G/ T# R$ Z) q

  3. 5 n  `6 J5 r2 [* n
  4. <div id="app">; Y% ^0 Q& u; D
  5.   <h1>Hello App!</h1>4 b. Y  e% h# O0 q2 z* C
  6.   <p>: k& p8 [- k) P% v# a
  7.     <!-- 使用 router-link 组件来导航. -->
    - i/ k) K* c, b% Q6 [
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    ( {& j8 ~2 ]+ I/ O. Q# T
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->4 Q, L6 H: y1 ], i9 c! A
  10.     <router-link to="/foo">Go to Foo</router-link>
    . d8 `+ ^6 d- l- \
  11.     <router-link to="/bar">Go to Bar</router-link>
    " c. Y1 a( d- ~- X+ l+ Y8 Q  A- A& j
  12.   </p>
    3 F" }" J4 }7 o
  13.   <!-- 路由出口 -->, x0 A/ B. x/ Z" X" M
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    + K! [. \# k- f: P$ T; `1 t& L
  15.   <router-view></router-view>7 i% E, j# F9 f
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    - z% \6 ]8 ?8 ]& i

  2. ) \3 M/ B/ V2 z8 Z# c
  3. // 1. 定义(路由)组件。1 ~8 ]- b: \# ~9 F5 i
  4. // 可以从其他文件 import 进来* G# N. f; g8 S) G( D0 X. ?# L
  5. const Foo = { template: '<div>foo</div>' }9 Z$ f  f3 s$ r
  6. const Bar = { template: '<div>bar</div>' }& Q3 w. `- k& V  v1 w! g
  7. 7 x: I( v9 x: }/ B+ v9 \$ q
  8. // 2. 定义路由) e9 L8 |- M7 t
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    8 r+ q( W; K0 \
  10. // 通过 Vue.extend() 创建的组件构造器,+ U7 K4 k* u, S+ T
  11. // 或者,只是一个组件配置对象。
    & F: @4 s2 }% _3 c6 Y* i& T/ h
  12. // 我们晚点再讨论嵌套路由。% m9 r& ?  g$ R) r9 n! S
  13. const routes = [
    9 V, O: w& y; Q
  14.   { path: '/foo', component: Foo },
    6 R8 D6 s" J2 H+ ]5 n  K. S$ T
  15.   { path: '/bar', component: Bar }) P& V" I) }9 o* i/ _. b! g
  16. ]
    4 k3 A$ }# ]1 x3 q2 ]( K

  17. 3 s3 s: _2 e/ C% t6 Z, A' m0 q
  18. // 3. 创建 router 实例,然后传 `routes` 配置0 P/ P3 I7 [! c' f( ]4 M* o
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    % U! d2 O1 s3 n# c& J  V1 k
  20. const router = new VueRouter({; ]/ B4 R& i7 I8 r4 ^" {; W
  21.   routes // (缩写)相当于 routes: routes
    / S1 [9 h/ k# ?
  22. })( W0 p0 S$ A- j# z; `! A
  23. : E8 ^7 x8 S' k, k9 s
  24. // 4. 创建和挂载根实例。
    2 D+ M% q- ?+ L! A
  25. // 记得要通过 router 配置参数注入路由,  S$ p5 `* T* q, V7 o! C3 E
  26. // 从而让整个应用都有路由功能
    ; U" n' W1 p. p$ ?7 s" s. |
  27. const app = new Vue({4 R3 D+ _' O+ Y) k. T$ C
  28.   router8 ^' s: \* e+ p2 h, U; ^& p
  29. }).$mount('#app')* X  y. T, |$ D" _8 z; [
  30.   @3 j- _0 b" P) }
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

& C+ O: s, h8 X+ B) w3 M( \; `7 j
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
      V" z* W' H1 L7 V& {
  2. cnpm install7 M* j5 A- W4 C' W4 V% I# B
  3. 6 E* ]8 r9 }) E. J! P: q. B( e
  4. # 启动应用,地址为 localhost:8080
      N* t# Q/ k1 D. Y6 w
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
2 M8 f8 W- W  _3 D
  1. cnpm run build
复制代码
% F# t# z+ p% k1 N$ B# R4 W
4 r* f! _. c& g- I6 _& O
5 [/ o* G/ ^+ @& X! S
% u! w3 Q: |+ X+ t

7 p4 o: r0 b1 ~  E6 _0 z! b; L. \& c) \

7 ]! l* H: Y: X. l5 K4 U$ z1 P0 R6 t) ~' e) v

: ^, W* q+ _+ @# {; C& ^" P) n% x" k  p7 U

1 V+ w8 @& K4 `. c  r6 I0 b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 15:52 , Processed in 0.127998 second(s), 23 queries .

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