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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15638|回复: 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
复制代码
! w( u' m2 b9 Z% C' D
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
9 N% O# d8 G, I
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码8 R7 d, r% L. R$ I' P
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>+ ]8 {  S- U+ q
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    $ T2 }; I2 `8 b, q+ Z7 N7 M& _8 @
  3. . _3 I# L' [* D' S! y
  4. <div id="app">
    * O: P- {6 V8 k8 a9 S
  5.   <h1>Hello App!</h1>
    + Y7 a, i: S0 g" g7 ?0 o% m
  6.   <p>
    . p6 K1 [2 D! y; l; b
  7.     <!-- 使用 router-link 组件来导航. -->
    5 _. c: R/ Q& Y: l9 g( Z
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    . Q+ g; x1 s+ f
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    - J" B; P$ w- z2 v. l  W
  10.     <router-link to="/foo">Go to Foo</router-link>
    / I8 C/ F" T/ C) {* {. `
  11.     <router-link to="/bar">Go to Bar</router-link>
    ) k+ B+ s' L7 Q  B/ g
  12.   </p>6 D4 @; i( k: `5 @
  13.   <!-- 路由出口 -->% {9 X# F: D9 K( l9 e- j0 D
  14.   <!-- 路由匹配到的组件将渲染在这里 -->0 O" E: F, h# |$ O
  15.   <router-view></router-view>& k; ~6 Y8 Q; S% {9 v, |% @
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    9 l# m, O9 [. X+ M

  2. 7 [; D4 M: Q0 }
  3. // 1. 定义(路由)组件。
    8 r& [1 M" _( \7 O8 R& v
  4. // 可以从其他文件 import 进来( E4 h& A" ^) H- y
  5. const Foo = { template: '<div>foo</div>' }7 o2 }0 `/ J$ t' s: q- B2 R
  6. const Bar = { template: '<div>bar</div>' }7 |; [* i' w9 ?# k
  7. 1 R; S  Z2 e. B# G
  8. // 2. 定义路由) K! ]4 F4 n6 D4 a
  9. // 每个路由应该映射一个组件。 其中"component" 可以是* n4 C8 E% j( q2 y, x0 v" V
  10. // 通过 Vue.extend() 创建的组件构造器,3 q. K) j( T2 L
  11. // 或者,只是一个组件配置对象。: ~- S' p  l, z+ J
  12. // 我们晚点再讨论嵌套路由。& c0 A# q) C, y  C" h4 H! D: r! w
  13. const routes = [
    # D6 D% l* P7 w$ Z( D9 y( v
  14.   { path: '/foo', component: Foo },
    # X6 I3 s- Q: ]  ?
  15.   { path: '/bar', component: Bar }" I1 h6 l, r% F7 T; p1 ^1 j
  16. ]
    2 r' G* ~1 g2 |1 d5 ?5 U# H  r  p

  17. % c1 |- m/ m" ?* J
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    " _7 D; @/ _* m
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。, C; p0 s) {1 k7 g3 H
  20. const router = new VueRouter({
      m& S  W( r2 ]. ~) t
  21.   routes // (缩写)相当于 routes: routes
    7 z+ j( d/ k* X% r+ _6 _# D
  22. })
      u1 ^% H/ {! y* V& E/ Y: G  r2 q
  23. , L  y  e; ]! h" n2 `# E
  24. // 4. 创建和挂载根实例。0 I1 \1 Y$ [2 f. a
  25. // 记得要通过 router 配置参数注入路由,: H# x. R  {, o* {
  26. // 从而让整个应用都有路由功能
    2 d0 O- m/ P+ z* L7 t, W/ M
  27. const app = new Vue({9 \7 ]  T# M$ S# q0 w3 c
  28.   router
    4 h1 g- X* j2 {2 K
  29. }).$mount('#app')% i2 Y8 i/ F+ \  M& `

  30. 3 m( p) J$ K; c9 v! a4 J* |6 F
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
+ H" u, e: M* v* T8 ^4 z
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm- v0 e; q9 V% X2 A, \: h
  2. cnpm install) s5 X6 T: I" \+ j: C

  3. * ~1 t+ ?" y3 D# ?
  4. # 启动应用,地址为 localhost:8080
    8 ?. @( _1 t, ^. ]
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
+ Y2 t: ^" x0 L7 z/ N& {) D
  1. cnpm run build
复制代码
; d. N6 m& v: K$ |; L

# q- f; m" v" d0 [" Y4 G
; U5 b0 @: X, ^* Z! V! o' W
: D) X3 g& {0 N2 G6 M/ v- w" s, f1 y; F% t; B$ Q7 n
  J+ g. v# ]8 J

( Q0 f9 x" E5 L( L3 c. O
: v: q/ ]# D; Q) B* N% g% b; U. @8 \( t5 _, d. `" G/ @2 T/ I6 V. g4 }5 u
5 [! O$ m6 ?3 ^+ R4 Y. p- H. c, m
( C: C# ]- y+ @; E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:20 , Processed in 0.059179 second(s), 24 queries .

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