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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15483|回复: 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
复制代码
! c. G+ ~6 G' d  @; j
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
5 H; e8 M, Z4 `4 h( h1 [
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
- W$ B) E  F0 m: m, k6 |5 S3 h
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>. S. R- U( ~! A' y
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>4 m6 }. V/ K6 B3 j% p8 G
  3. 9 t$ m- K5 X( c$ J4 Y  p' Y, U
  4. <div id="app">/ \4 k& _" b2 H" R% j
  5.   <h1>Hello App!</h1>% Y1 `/ S7 Y; O+ e* L* q- J7 Z
  6.   <p>" O! j6 T- [1 d& K- d9 @
  7.     <!-- 使用 router-link 组件来导航. -->
    % d% ?% D7 S; M8 T) J
  8.     <!-- 通过传入 `to` 属性指定链接. -->, i& I) U2 c; m" ~! x, a
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    6 I6 S/ u6 L  Z! S1 j( `: ?7 ]; M
  10.     <router-link to="/foo">Go to Foo</router-link>, D  g; u1 \9 C) |. f! ^1 A
  11.     <router-link to="/bar">Go to Bar</router-link>1 J! J9 Q7 u" y
  12.   </p>
    ! i2 j* m" }1 _$ t
  13.   <!-- 路由出口 -->$ e5 l0 Y7 k9 L+ K6 h
  14.   <!-- 路由匹配到的组件将渲染在这里 -->$ u; Y( W  J8 s6 x
  15.   <router-view></router-view>. Y$ r* {* C1 i6 L2 S
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    ' ]6 V. E4 R1 o$ C* x1 X
  2. 1 K) k" D' t7 v& J1 I, P/ Y9 l! v
  3. // 1. 定义(路由)组件。2 G5 Z; B, ]3 R9 s
  4. // 可以从其他文件 import 进来
    $ M8 A4 O2 S$ Z' [
  5. const Foo = { template: '<div>foo</div>' }: K! R1 S( b- S- w5 z% x' o
  6. const Bar = { template: '<div>bar</div>' }# C# f' M' ?/ d5 c' d

  7. 5 n5 w/ T, G- d' l
  8. // 2. 定义路由
    3 w6 q: v) m% c0 L# z- ?* Y
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    % O. {* K: R% ?
  10. // 通过 Vue.extend() 创建的组件构造器,7 w( {3 g& u2 O( V
  11. // 或者,只是一个组件配置对象。( [  u* x2 h2 h# ~& p, k
  12. // 我们晚点再讨论嵌套路由。0 b; F8 i1 n" f, A0 E, M
  13. const routes = [
    2 g- q/ ^! q) L1 b
  14.   { path: '/foo', component: Foo },
    1 w7 A. T- @# o5 J- c* ]: _8 \8 t
  15.   { path: '/bar', component: Bar }
    % h- N) j) d! ~1 m  k
  16. ]7 R" w+ Q! a2 C" H& |( b2 ]
  17. 4 `! O1 ~7 b2 ~7 Q! h, H0 U3 c+ S
  18. // 3. 创建 router 实例,然后传 `routes` 配置
      x- l' K5 O$ O6 j% ^% E. |
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    3 _3 T0 k' }& k: d3 M1 u
  20. const router = new VueRouter({" \  x/ x2 t# [8 g( `
  21.   routes // (缩写)相当于 routes: routes
    - L% s5 g+ v( l% F( o& I+ ~
  22. })3 B6 ?- \# N5 y6 {6 Y$ }, |

  23. ) _8 [+ Z, V( O9 Q# l! j( y9 i
  24. // 4. 创建和挂载根实例。: O7 D- z+ E' n& \$ n) K, t
  25. // 记得要通过 router 配置参数注入路由,$ u' [0 d0 {! F# m1 u9 x; x# b( H
  26. // 从而让整个应用都有路由功能  p: C5 T+ O$ X3 T& U7 A3 n1 T
  27. const app = new Vue({! V0 U6 ^1 Q3 y8 A$ n8 l+ y
  28.   router2 F# ]+ m, i) `$ K( \
  29. }).$mount('#app')
    - M: X( _5 M1 M+ h1 g" u3 I
  30. 7 @- e/ j7 B4 F+ _
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

3 t! V3 s4 K# O+ l1 l
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm' Y; H/ c2 [9 H, i' j4 _
  2. cnpm install  n3 a& z) A( P- P( Q. m

  3. % c4 D. f6 {4 Y3 |+ @
  4. # 启动应用,地址为 localhost:8080
    5 @  s% B  l( r8 y# V  r2 Y/ |! ~6 l
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:6 T% a, m" `) H. |2 J% P5 E6 S
  1. cnpm run build
复制代码
- Z8 B  ^1 h9 j+ K) X
: \& ~  T( f6 q
: G; @9 L6 `5 [$ Y/ {" _
& k. H8 B0 r$ b8 S
( S' E7 k. |! a# V9 t6 Q
  j' ^2 r% t# d8 j& R
  ?; @9 B# E* z" w
- D! I# F  Y( d; Y

$ h5 ~9 B% ^$ V& s. j/ H" _1 s9 V. s
1 d: I( D) d( H8 F8 }3 \/ @$ v2 ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:00 , Processed in 0.068518 second(s), 25 queries .

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