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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15634|回复: 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
复制代码
6 I1 @! ]4 h% {, d) c5 i
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

0 h: g4 m6 X  v/ Y  e' nNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
- X1 }# L0 Z; N8 i# ?* v
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    ' M5 e1 C# X! \( V7 q. a# E
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    . f) Q7 c) }5 Z! V, Y

  3. 2 S6 n9 Z7 Z' ]
  4. <div id="app">
    7 k' `& C0 ?; i) G. S) O# G6 }
  5.   <h1>Hello App!</h1>
    / [& d* j* [8 R! a' L, X6 j
  6.   <p>
    0 u; B" q; P6 m- R. I
  7.     <!-- 使用 router-link 组件来导航. -->3 H* i) v* b6 M, j0 M! B  c8 V6 U9 F
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    / ?* ~) G7 q: d9 W, W
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->0 j' i/ b. w! q
  10.     <router-link to="/foo">Go to Foo</router-link>2 s2 k" ^8 y5 O( y
  11.     <router-link to="/bar">Go to Bar</router-link>- H5 E- b3 g2 d. _: ?6 Z
  12.   </p>' i$ ^) [, q+ {7 Y
  13.   <!-- 路由出口 -->
    2 c2 b! ^& x! ]2 z# z
  14.   <!-- 路由匹配到的组件将渲染在这里 -->( Q+ O2 @% L: {0 p
  15.   <router-view></router-view>
    4 u- \! W- ~' Q# V; F+ b- ^5 }
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)) R- q+ N& d! t. `1 ~4 ~; I8 v

  2. 7 L1 Y2 Y" d& H, l4 O' v
  3. // 1. 定义(路由)组件。: _' H4 ^8 K  O) k, Z6 i% ?/ v
  4. // 可以从其他文件 import 进来. T0 ?" L! ?/ g1 \; g: n3 d
  5. const Foo = { template: '<div>foo</div>' }$ m) y  J4 G, d. T( W
  6. const Bar = { template: '<div>bar</div>' }
    3 T  A/ Q# R8 W  p$ p6 H

  7. ( Y- h) ?4 T3 k& V9 @
  8. // 2. 定义路由
    . _% p: J( ^7 b4 ?8 V( J
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    : M6 }, s4 F* K) O
  10. // 通过 Vue.extend() 创建的组件构造器,: m* p5 j# C1 J6 Z6 A2 v/ k
  11. // 或者,只是一个组件配置对象。+ d' v( L' g  r9 a3 b4 M
  12. // 我们晚点再讨论嵌套路由。1 t3 B; j. X! R; f) c! [6 z
  13. const routes = [
    * y9 S2 G6 \3 T6 b7 Y  [. N- N7 L7 R
  14.   { path: '/foo', component: Foo },: P  D' Y9 x! t% Q, ~
  15.   { path: '/bar', component: Bar }$ K( \, }' ]8 f
  16. ]: Q# X! S% X2 W! S0 ?/ @

  17. 7 g- D8 S2 ]: D; a( ^; D- }& W8 ?
  18. // 3. 创建 router 实例,然后传 `routes` 配置8 M( b: b6 ^1 `0 l% k) y7 G- G
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    / T% L8 R' A5 \
  20. const router = new VueRouter({% h4 W5 s" M0 I, k" @* D& W7 P3 S
  21.   routes // (缩写)相当于 routes: routes
    2 |- b0 O* a! q- H. q6 n
  22. })% x& e0 ~3 N+ @7 n4 B

  23. * U+ r$ R4 d# `% U
  24. // 4. 创建和挂载根实例。
    " b" q% L4 ~4 N$ `3 L, H
  25. // 记得要通过 router 配置参数注入路由,- j* ~  p% U) P2 H& J
  26. // 从而让整个应用都有路由功能" k# X& y3 z& `% p6 ~( ~
  27. const app = new Vue({
    : r4 i+ z$ _" p& o. l. S8 u0 N
  28.   router
    7 w% M; E# R; U0 Z& C0 `6 T
  29. }).$mount('#app')  _) }2 U9 N% ~8 B+ ]& c% }8 U

  30. ' j3 D2 ~/ `) D: }( i8 R
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
8 f' o: D1 u+ Z; `3 d
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    ; P7 ~' i9 W- Z4 d- S! n# q' X' j3 q
  2. cnpm install, X% x1 J% c, W  i' D, m8 ~9 J
  3. # d  C* I% ]% ^3 Y5 m( m6 C
  4. # 启动应用,地址为 localhost:8080
    1 s- R8 [9 O* W: p
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:5 a# \( R% ]6 `8 ~1 i  x" G) D
  1. cnpm run build
复制代码
5 \) m$ x3 H  _, I; _$ F

, Q  Z: X  Z8 P- D+ E5 S! z% m5 n% n% _/ Y
/ L( R: ^# W! q9 ?8 H
. O( J0 Z2 j9 w+ a( P$ C

$ v7 Z- I+ f" E' y1 ~* C. o. [! C( u/ k7 o7 {/ M* @/ ~* W4 X3 G, _
1 t; H3 p1 ?' j

" x8 S% W: w' H6 y' L$ w- Z5 d+ u" ^/ T
% t. a( u" ~! g' |9 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 18:22 , Processed in 0.056637 second(s), 22 queries .

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