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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

- x0 @& I8 N0 N" k' \
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

; t) @- U8 F: iNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码' d0 y% w8 `( u7 H6 j$ v
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>+ J: x( Q1 H2 N& S/ Y! L: Y
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    , W0 W4 O6 r8 ~0 q  K
  3. 0 }; h1 `: G, g, D
  4. <div id="app">3 D- `' K; d' w/ D+ z
  5.   <h1>Hello App!</h1>4 n/ e* Z: Z8 J9 \" @* G
  6.   <p>. [/ F- G; g# Q
  7.     <!-- 使用 router-link 组件来导航. -->
    * [6 s# h. h4 W1 {) K& x/ ]
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    4 a6 C/ N, v0 g" k
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->9 f% M$ @7 M% B& U( {# Y
  10.     <router-link to="/foo">Go to Foo</router-link>
    1 I, m& v% k3 M( ]
  11.     <router-link to="/bar">Go to Bar</router-link>
    ' C* ?0 x- D5 e) b9 X6 l
  12.   </p>
    9 w5 E! }& w7 q
  13.   <!-- 路由出口 -->
    $ h% {( |1 w8 r: A! e! h
  14.   <!-- 路由匹配到的组件将渲染在这里 -->6 ]3 `; s/ f8 w/ @( h
  15.   <router-view></router-view>9 }( f1 \6 y, \# i' ]# [! d
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    4 J! j0 L) a2 b
  2. ' W7 D9 A7 P& r$ `
  3. // 1. 定义(路由)组件。0 O* ^9 ]( v  T7 p; y- ^1 H: O0 w
  4. // 可以从其他文件 import 进来4 X0 i4 g- k0 p6 ~) V
  5. const Foo = { template: '<div>foo</div>' }& @8 ?* g8 J6 n: @: H) g
  6. const Bar = { template: '<div>bar</div>' }
    ) B- b- n$ M" p4 X: `4 B* a
  7. * f! ^/ F1 B) }4 A4 Z# d! Y. [) e
  8. // 2. 定义路由
    - E( |* L/ N: T( ~1 N2 P0 N; c
  9. // 每个路由应该映射一个组件。 其中"component" 可以是: y9 G. x! R' ]) I3 {% c  |
  10. // 通过 Vue.extend() 创建的组件构造器,) n9 ~# ?9 z4 P$ \  a1 p7 L1 l% Q
  11. // 或者,只是一个组件配置对象。  C7 v$ w! S1 t& C2 X6 v
  12. // 我们晚点再讨论嵌套路由。' D; T, X$ ]. _9 J; j- b  m# ]
  13. const routes = [
    : D- I! C3 x1 X; b' P5 e
  14.   { path: '/foo', component: Foo },7 J9 y% y2 N; T* ]
  15.   { path: '/bar', component: Bar }
    . \  T0 R( E3 }
  16. ]
    ) t. b/ o6 @* F. _1 x4 Y

  17. , ^# z8 y5 ?: A- w; F, n4 n
  18. // 3. 创建 router 实例,然后传 `routes` 配置3 z  b. V; f" k5 `  E
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    5 d+ P9 I7 ^/ i* I4 ?
  20. const router = new VueRouter({
    " Z+ I0 H; _* a) Q: r
  21.   routes // (缩写)相当于 routes: routes9 d# C1 H- B9 M7 `0 A
  22. })% R0 a: L" N% c  ~& p! b" b
  23. / p1 l! G/ c9 f
  24. // 4. 创建和挂载根实例。
    # h- t. C" P" g. u
  25. // 记得要通过 router 配置参数注入路由,- p* B& C- [) `& v0 ?. r
  26. // 从而让整个应用都有路由功能
    ' e1 p/ W# u& K% |
  27. const app = new Vue({
    5 v7 g+ `9 X! r, I$ L* I
  28.   router
    8 P4 Y6 u  i, {' O& |2 V/ ~( P
  29. }).$mount('#app')/ I, L, N- s3 X8 H
  30. 5 n4 q. T+ I- y
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
, F4 M: [2 l: n7 a* M
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm& M1 u7 c# k* s% \9 m
  2. cnpm install
    # Q" o/ r; K1 p3 d  p5 j* n" Y

  3. " Q* E; z1 e3 I/ _8 |) O/ A1 o/ @1 ?
  4. # 启动应用,地址为 localhost:80804 ]* O3 w4 q  D' _, K3 U" R+ c, t
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
% s! c) z7 `4 e* ]1 ]8 t$ W
  1. cnpm run build
复制代码

1 o+ ]& R' y$ L3 F, O% g' l0 X1 Q( u4 K

: _: _! `. o+ d0 Y/ r8 z: g
' [1 U- V. c6 [8 q% O! v
- W9 C# j% \" x9 Y. _8 B4 X9 @2 Z3 v: L5 a6 a$ E6 V9 ^
( [6 m* e1 S  Q  n% ~6 V- I
' [* Y" X# d" ~3 S

3 h, P8 `" d* B/ Y3 c+ v- {, {9 @( R, l
* |5 W; D9 A( u* `( L5 f, {0 |( R. h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:11 , Processed in 0.070084 second(s), 23 queries .

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