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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15907|回复: 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 ]: C- t- P; i9 {
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

9 j$ p/ w/ V' @* HNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
  U- I9 M0 B( z
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    5 L3 J- K/ O. \" ^+ K
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    5 |. G4 d9 [, I: ]7 d7 m
  3. 3 c* w% R1 I; ~/ I( Y4 q- _
  4. <div id="app">
    9 A2 n8 {* F9 Q/ \& P: o/ Z" {
  5.   <h1>Hello App!</h1>
    - |1 t3 }! W5 `0 @& T# ?' a
  6.   <p>
    8 e( O: Y. W1 I
  7.     <!-- 使用 router-link 组件来导航. -->+ v8 t: l/ W+ F+ G5 D1 Y
  8.     <!-- 通过传入 `to` 属性指定链接. -->% h) ]. y  s/ l9 g, }- P7 `1 S/ ~9 m
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    $ W9 J4 A! }/ z% y6 x3 X2 l
  10.     <router-link to="/foo">Go to Foo</router-link>2 N: I8 S  o- W) c# Y" C
  11.     <router-link to="/bar">Go to Bar</router-link>8 _0 V; P, X" h$ g! E: p! H4 F
  12.   </p>
    9 M: X1 g3 R' @2 ]% U- F1 ^1 D/ E
  13.   <!-- 路由出口 -->
    8 |1 ]4 Q3 `7 x
  14.   <!-- 路由匹配到的组件将渲染在这里 -->; `( [# X6 t& t6 w
  15.   <router-view></router-view>3 g$ r+ z' k& C3 S( C6 R
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    3 T- J6 ~. w7 |7 V

  2. * v' |) Y  M& s" ^( l
  3. // 1. 定义(路由)组件。
    ' ]# e6 o4 q2 U4 D1 K
  4. // 可以从其他文件 import 进来
    3 e  e0 D+ y1 d# m  a$ ]. K3 L
  5. const Foo = { template: '<div>foo</div>' }
    : n" f! j2 Z% J6 ]1 ~- W7 a( L
  6. const Bar = { template: '<div>bar</div>' }
    # u$ Y+ W" s8 F" f1 h" |$ E
  7. & Q. y( x  r7 }; M0 C6 a
  8. // 2. 定义路由
    ( m4 d9 }* p- @- i
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    1 P6 n: z% o9 O% a6 s
  10. // 通过 Vue.extend() 创建的组件构造器,
    - {7 K- N5 L3 s, \$ }1 D1 g
  11. // 或者,只是一个组件配置对象。
    8 O) m& x! T  p# q" B3 J+ P# z2 i- L
  12. // 我们晚点再讨论嵌套路由。
    9 V. Y9 r  H# g$ e1 g
  13. const routes = [
    ( [2 R3 u' U2 S/ _6 [% ]
  14.   { path: '/foo', component: Foo },
    % `) Y% R& H5 M  C5 _
  15.   { path: '/bar', component: Bar }) o* f) \) V& w
  16. ]
    8 P  R9 k+ K. I0 Z

  17. . T9 J+ N' x* M
  18. // 3. 创建 router 实例,然后传 `routes` 配置. a1 F* v! i8 @# M% c
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    ! y7 A9 C% }% J! \! v
  20. const router = new VueRouter({4 U' ?; I* M$ z7 N; S
  21.   routes // (缩写)相当于 routes: routes
    6 j+ Q( p" L! u6 K8 n$ @
  22. })' w" }' ]% l9 d7 |
  23. 7 {0 v3 G7 S- l
  24. // 4. 创建和挂载根实例。
    " q- o' `0 [) I% U
  25. // 记得要通过 router 配置参数注入路由,
    & w+ [$ s9 ]' y% D5 A+ v3 x" V
  26. // 从而让整个应用都有路由功能
    1 _- H. F1 k9 Q# ]
  27. const app = new Vue({1 ]# |3 A" E* b
  28.   router7 F0 x+ O4 P1 @
  29. }).$mount('#app')
    . \" L1 Q2 P+ K% W

  30. $ v8 W( e/ G: Z- q1 {3 d4 R- p# e
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
' q% l& M4 q0 Q9 `( r
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    - n' O: ~2 ^$ s' @. A0 p
  2. cnpm install
    ; o& u6 S9 x) o, w; @
  3. / @( T( m5 w. \9 T. a0 D0 V/ b
  4. # 启动应用,地址为 localhost:80804 E) ^" g4 @/ U2 u' x
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
  T- n7 {& I! s& \1 G) c3 q
  1. cnpm run build
复制代码

3 u' r7 c0 t* M0 Z" O1 }' d+ ^+ C/ t! m. ~; u. \4 V% j) e6 f

* Z# r) {& L& b* g. \: \* K# j* n/ a. A# c$ z4 l
$ L5 B" K- ~  ~7 A$ N+ y( k
5 _2 S  S, z3 J+ T$ F# |5 P
, O" q: E1 S, Y& w

2 @  |" k7 g0 C+ ^: ~" {3 K9 s  i8 z9 x9 c. R( _
+ Y. R' n. a' @
0 P: y3 L/ H7 r) F, S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:55 , Processed in 0.091116 second(s), 22 queries .

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