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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

7 z+ x9 H# f; l6 Y' j' H5 p
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
2 j- C, Y$ O0 h
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码% x, O2 Z& ?7 T1 K4 g' b( R3 ~
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>$ B- e, y! l( T$ N$ [) q
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>* o+ y1 A6 n2 z: Q+ M5 ?
  3. 1 h" u" v8 Z( |: l% N+ T
  4. <div id="app">) d8 T1 b  G5 d% l, H0 p
  5.   <h1>Hello App!</h1>
    - @3 d( Y/ f' J( M6 \
  6.   <p>! P( Q# a; A! W) O8 Y* F. `
  7.     <!-- 使用 router-link 组件来导航. -->+ K* |1 V" e$ N2 Z/ R
  8.     <!-- 通过传入 `to` 属性指定链接. -->% C0 H/ B8 h# c5 G0 k, j
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    , x: f! n" V/ y& Y0 ?
  10.     <router-link to="/foo">Go to Foo</router-link>8 E3 L* d' F5 s! X* t6 R
  11.     <router-link to="/bar">Go to Bar</router-link>
    5 W% L  f# l4 q$ d
  12.   </p>
    ; n+ Y7 S+ v- f3 _! i6 t
  13.   <!-- 路由出口 -->4 p& T3 J- `8 ?7 z+ ]/ M
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    ) l, _/ A! N  \( h6 T; `
  15.   <router-view></router-view>) [9 u$ @, X3 y: E0 X- [! w: y
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)1 r7 r  O2 z* u* M$ d

  2. 0 b1 D1 v$ B8 v# g
  3. // 1. 定义(路由)组件。
    ; Z+ q& D7 _  @/ C
  4. // 可以从其他文件 import 进来
    , E6 R3 p4 g1 H: p" u
  5. const Foo = { template: '<div>foo</div>' }
    # I: W" u6 C2 V' S( h6 e/ k( u
  6. const Bar = { template: '<div>bar</div>' }
    ! M0 i* ~- X! q; Z+ }6 s
  7. " d: \0 E0 x5 m4 e8 {
  8. // 2. 定义路由, V  d1 G" s+ p( P! J3 u0 n& C
  9. // 每个路由应该映射一个组件。 其中"component" 可以是; U( y. c  u! U# U7 i
  10. // 通过 Vue.extend() 创建的组件构造器,
    : h0 {' W2 A5 \3 \: O  q
  11. // 或者,只是一个组件配置对象。6 o% {; l' \: {2 J! }5 j* _
  12. // 我们晚点再讨论嵌套路由。6 @* b9 z+ d, x2 H2 `
  13. const routes = [
    : l+ L2 p: u6 _! h
  14.   { path: '/foo', component: Foo },- p  S, X" |  B  ?% W
  15.   { path: '/bar', component: Bar }8 a) l( s) }" N
  16. ]
    / @" [" i6 u& {# \) i
  17. - z' Q& j! D) p2 J$ k
  18. // 3. 创建 router 实例,然后传 `routes` 配置/ ^' \2 s5 z5 s4 Z& Y
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    + L4 X& S3 Z  j; Q. u0 d
  20. const router = new VueRouter({
      U3 l; X. M2 ^8 x. e1 T+ x* e( @5 U
  21.   routes // (缩写)相当于 routes: routes
    ) v5 b! W" S$ `+ z
  22. })
    * _" i) j' D: s

  23. $ ^% G& \, C" d
  24. // 4. 创建和挂载根实例。
    1 D% L; q% q, V% `- t; u* Y
  25. // 记得要通过 router 配置参数注入路由,) p- _9 p2 U4 J- s
  26. // 从而让整个应用都有路由功能
    " r- {* T* j) S' v) F$ J) G) j
  27. const app = new Vue({" ~- ^5 f0 V1 M: }6 E; F( K
  28.   router
    1 w0 _4 g$ a4 `& v
  29. }).$mount('#app')
    8 Q# x/ `: r) A5 ~+ \, X: ^

  30. 7 H' t, c& v" f6 J
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
3 d; w0 Q$ q5 V; w1 j  S
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm; f8 ^/ m5 q* ~7 k% |0 Y  _  T' P9 Y0 h
  2. cnpm install
    $ F4 L- C( i, }; ?
  3. " V6 u3 |% n3 b, |
  4. # 启动应用,地址为 localhost:8080
    " }( e% W9 j: ]. m3 s3 R9 q0 s
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
1 \" ]; F' _, S6 C
  1. cnpm run build
复制代码

9 p, I. `/ _% E% e$ S6 m
1 Z+ l3 g& N# @+ ^! n
; e) L, L/ I+ L! F0 R9 u! o8 c2 [! ^- t+ C1 y: r) ^2 }

7 v! @; F! y6 m9 e+ V) P
( Q* o5 i  R3 Y, T$ Y4 k  _- F2 O5 b' f( [1 y

' J$ n' }' ^1 n; ]+ z. v7 v! l
7 B5 c" Q0 x4 h
; c( T  {( G4 d# J, ~  _  r8 B
1 \# Q& R0 D' Q4 d# \! c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:54 , Processed in 0.088400 second(s), 23 queries .

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