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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

' H; w4 I5 O9 `8 g, F
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

) @! t' f& A( ^NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
0 G& D& U  {( y' l6 J
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    / ~: ?; N$ ?  q' w! g/ U
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>/ I& T& l6 w( {1 K6 W$ ]
  3. 2 G1 c2 W/ H+ g9 n/ h
  4. <div id="app">7 Z+ ~0 K" y/ ]7 \4 J. {
  5.   <h1>Hello App!</h1>
    % {, v5 M$ ~; k; F/ ~. I" r
  6.   <p>
    3 {& d8 J0 h0 e9 K) Z! U5 Q
  7.     <!-- 使用 router-link 组件来导航. -->
    # d8 ^6 t( v5 v! w8 q0 t8 r
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    4 r" G6 ]. L5 @: L
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    ( D" ?8 u# m: e$ t
  10.     <router-link to="/foo">Go to Foo</router-link>
    ! a& D3 X9 V5 Q% c* G" ~
  11.     <router-link to="/bar">Go to Bar</router-link>+ V8 D( A8 \+ g3 G1 k
  12.   </p>7 c$ Y6 r# y  H* ^+ n! U4 D7 ]
  13.   <!-- 路由出口 -->
    6 `; U( @, ~8 T2 f9 i: k' `
  14.   <!-- 路由匹配到的组件将渲染在这里 -->0 |1 r+ @$ y+ t1 w3 d+ x# E1 e. s
  15.   <router-view></router-view>
    9 y/ t7 O( l# c& H/ L
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    ; c: v; R+ M2 T. P+ l

  2. 9 w" [9 G, Z+ k/ \/ Q
  3. // 1. 定义(路由)组件。
    ) V# P+ u4 @# l3 }; O
  4. // 可以从其他文件 import 进来1 g4 |0 p2 J, Y3 J; g) _
  5. const Foo = { template: '<div>foo</div>' }. J7 N$ F9 K4 E7 j0 F' s' M
  6. const Bar = { template: '<div>bar</div>' }% |9 W! X7 o" h5 T" u5 z4 w6 r
  7. ' k3 Y. e7 k2 C: h
  8. // 2. 定义路由0 p! r  v- K7 _; c
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    , ~7 a, e: ]6 }9 m: k
  10. // 通过 Vue.extend() 创建的组件构造器,1 x: D% S* y$ p2 s; `9 |. q
  11. // 或者,只是一个组件配置对象。8 M3 z9 b( x5 ^
  12. // 我们晚点再讨论嵌套路由。9 m5 J$ ^3 `  m4 V, h8 m
  13. const routes = [
    ; w/ G1 G( \2 V( Y/ F2 [* l0 _. c1 Q; t9 X
  14.   { path: '/foo', component: Foo },
    0 S3 \. P3 S/ ^" j) ~* f  m
  15.   { path: '/bar', component: Bar }  E# B+ |2 D; z. r) o
  16. ]
    ; t3 V1 r$ m6 i' d5 A, Q+ ]

  17. ! Y) M  F9 W! c) u; f
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    7 {+ z' f. @# M; C) r
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    5 p( w# Y* P- m* v
  20. const router = new VueRouter({
    . a/ d1 a8 \  ~+ p8 R' R+ ]
  21.   routes // (缩写)相当于 routes: routes
    : d2 i- o; ?; [  U; Z: `* [3 x
  22. })
    + G! w6 W, k7 Z
  23. 9 S& A% ~& o8 K1 v  I! ^; u
  24. // 4. 创建和挂载根实例。9 M4 N+ ~6 ?; S1 ?% y. |  k5 @4 a. ?
  25. // 记得要通过 router 配置参数注入路由," D. U4 ~9 ?+ D. w9 ~4 \3 E7 c% n
  26. // 从而让整个应用都有路由功能
    , |( t' ]' M# U1 ~# C
  27. const app = new Vue({
    & R' p9 G* j$ J$ F0 K. V, N
  28.   router
    ' Q- P0 r2 p! b. Z% a
  29. }).$mount('#app')
    ( |8 i/ w1 }- y2 [, L% u" M/ ^

  30. ( Q1 r0 ]2 D1 X3 @  H( L/ @
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
: H! s$ ?& S, ?' c2 Z. c6 W2 m- B' C4 [1 x
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm% E2 {: r+ M$ s8 F, ^
  2. cnpm install) G6 I9 C9 v( S4 B( m! ?

  3. 1 T$ s! @# b/ _8 O$ q) @8 U$ P! L
  4. # 启动应用,地址为 localhost:8080
    ( v& }, g: b4 O3 t
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:% j. u) q, w0 u
  1. cnpm run build
复制代码

% W8 w: l9 w. ]2 R8 l+ I1 @1 j- C7 H+ s! l

) O: C9 M( }. V/ F% l- B$ Y# E
5 H  \2 n  ?: ~- P2 @9 Z% I; z
8 |& j' P8 f  Y) y* A* I% f
; H" K3 N$ J" O) {: c% Y7 a8 ^1 i2 ^" `: e7 Q
& R, ~) J1 ]$ s2 Y; }
  s+ ?! a4 X" Y- m" m, z$ p. m" S/ j

5 T7 i5 B# M0 n1 I5 Q) B
! n3 N# ]6 `) n2 y- w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 22:48 , Processed in 0.064658 second(s), 22 queries .

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