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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17160|回复: 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
复制代码
' O) t6 J; W, f- j  ]
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

- @7 d- ?3 c- i, i( J1 B( x" @NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码/ [2 z3 N3 `) [
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>0 y. K4 t! U- X: V5 y9 l' ]
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    - b  |& y9 i5 p4 V
  3. * Y: A( r/ ~0 o2 u
  4. <div id="app">+ m( a/ N2 K. \
  5.   <h1>Hello App!</h1>
    . _  s$ N8 m! g/ l+ N5 d' i7 `! I
  6.   <p>( \" i- z% m, W  Q2 W( C
  7.     <!-- 使用 router-link 组件来导航. -->
    ) n8 I- u, w* f
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    # ]5 [* _% }; r+ a9 l
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    5 R1 a9 g3 ?$ s! c* `& ?' c2 e
  10.     <router-link to="/foo">Go to Foo</router-link>1 J! }! G9 |! u# Z& B) L" O: S$ R
  11.     <router-link to="/bar">Go to Bar</router-link>
    9 c6 _7 ~$ p# M3 h
  12.   </p>
    & N. ]# p8 P2 f: y
  13.   <!-- 路由出口 -->$ |0 u4 U' W& f. @) n$ w; K
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    ! c( l7 H" O, O1 h) A" e8 j9 p
  15.   <router-view></router-view>
    , T) F4 {0 J/ L3 l% y: @
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    1 f8 s4 A- K3 s0 S! q" o

  2. . ~1 o$ o! X3 Q
  3. // 1. 定义(路由)组件。
      k7 z; u: ?6 c7 O6 z% n( {
  4. // 可以从其他文件 import 进来
    ; J1 b8 ?  o  Z& z  }) S/ w9 t% W
  5. const Foo = { template: '<div>foo</div>' }( n5 d9 C3 Y1 K. G* @. M, L7 X* H5 i
  6. const Bar = { template: '<div>bar</div>' }9 e6 |- N4 q  Q$ R5 s# J# y

  7. % t! J! b$ P' b. ~1 O+ J! E
  8. // 2. 定义路由/ ^9 X2 |+ u3 Y) V8 Z4 [" a% {
  9. // 每个路由应该映射一个组件。 其中"component" 可以是, L- K1 ?7 W) D' [: V3 n! C9 N9 [
  10. // 通过 Vue.extend() 创建的组件构造器,
    2 {, U' }0 ]* S2 @5 [' q1 K5 w& J
  11. // 或者,只是一个组件配置对象。
    8 X7 _5 [% J/ S, V, [
  12. // 我们晚点再讨论嵌套路由。5 t3 J+ y$ z% X% M
  13. const routes = [
    : o* W8 U4 Z7 R: z! X
  14.   { path: '/foo', component: Foo },8 l. @2 Q7 B5 C) \: F- G5 Z5 B
  15.   { path: '/bar', component: Bar }" E) i# y0 d$ \2 n9 _; U$ h
  16. ]
    ; `, h3 G  R! j4 k" Z6 V

  17. ( G5 v) i, }$ r& O; ]: S5 ~4 Z
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    ) y' s3 t& o4 A
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。) A# `& G& y( ?! Z
  20. const router = new VueRouter({& K. v5 ~$ f# x# h& d  u: V+ z& e
  21.   routes // (缩写)相当于 routes: routes7 d# ?" F; N% F% L0 c
  22. }): n7 }- f- k8 V: K7 [6 i

  23. & ~' n. L; s4 S8 p
  24. // 4. 创建和挂载根实例。
    6 t$ s/ e! X% Y4 t
  25. // 记得要通过 router 配置参数注入路由,
    8 W) X3 G) I- ?
  26. // 从而让整个应用都有路由功能
    + e% B- O& p. c
  27. const app = new Vue({, |# d- q% U  m+ P2 D# R; H
  28.   router
    * T$ ~) o6 W7 [
  29. }).$mount('#app')8 [) r6 |$ M) V4 ?$ ]
  30. ! u- E+ [6 y9 G: f& ~# L$ G, B8 u1 s
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

7 Z* v1 V3 A( p; v# n" Y
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    & d+ e0 D4 F9 L2 q. I  r
  2. cnpm install1 Y2 ?/ G, W, V8 n5 q

  3. # h$ a7 J7 G& k1 R+ v
  4. # 启动应用,地址为 localhost:8080
    0 H/ k  `, s1 F6 b* O
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
! D! @5 u# B% e7 A: o; p+ g
  1. cnpm run build
复制代码
0 Q0 I+ l% @) ~! f

, T  @( Q0 Y2 r7 U& x2 y1 F- c2 ~1 J( q1 Y. b% l8 J( `# i* |
# p3 @1 k  O; F, c5 k% h- y, U; \
  q. ]- J/ Y, L% W6 q
% H  p1 F+ [/ d9 @5 v
0 j4 `. I- U, c' W; d# L1 E  q: Z
2 E  w' @0 L) T4 M. \$ _

$ E8 a/ @" R1 R9 w3 L3 ^
! X% X0 K6 s+ j* k6 P  A6 i- S5 n# J7 p" C2 K, `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:17 , Processed in 0.054486 second(s), 22 queries .

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