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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12404|回复: 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
复制代码
5 c# x! z# }4 P  ]5 w3 n
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

' R& H1 m* O, y9 GNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码$ P  e1 Y# T' `9 N  |% s( r; C0 l
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>2 Q  Q6 p9 w% |, i
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>0 r4 V4 R% g$ \9 M/ F

  3. 9 t# m* D2 J" K& \; c) ]9 R
  4. <div id="app">
    1 h* K  K8 j0 r) [! F
  5.   <h1>Hello App!</h1>; e9 n9 g9 G5 v$ X
  6.   <p>
    8 x( O5 N2 ]& j+ Y# k) v# a1 g8 J
  7.     <!-- 使用 router-link 组件来导航. -->
    + F' C  B" n; \9 t
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    . U: H+ J; V. h" ]
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    0 a% i0 V+ j9 n* H
  10.     <router-link to="/foo">Go to Foo</router-link>; Q" P4 E- M' K# y6 `% a) U
  11.     <router-link to="/bar">Go to Bar</router-link>
    . d2 P9 @6 T: C" A; u9 P6 ?5 o
  12.   </p>
    ; @0 i4 d2 r! K
  13.   <!-- 路由出口 -->
    + O1 M: r2 u6 r8 f
  14.   <!-- 路由匹配到的组件将渲染在这里 -->9 D1 O! U& N  g) h7 d
  15.   <router-view></router-view>4 _5 x. J3 @1 O- I' K
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter): I. _$ `+ w6 }1 K
  2. 2 l1 R6 T1 }# @2 W2 a
  3. // 1. 定义(路由)组件。) }+ @5 O0 b5 R7 T1 o
  4. // 可以从其他文件 import 进来
    6 B; l; n/ e2 R0 E6 @
  5. const Foo = { template: '<div>foo</div>' }
    ' K7 z' M! j6 q: N; t
  6. const Bar = { template: '<div>bar</div>' }
    , g. }  ^5 [3 F
  7. 0 ?0 i8 k. j" f2 F4 d
  8. // 2. 定义路由, A- N8 \, j: o+ O. F' _& t9 k
  9. // 每个路由应该映射一个组件。 其中"component" 可以是2 f& ^& _/ U% G* R+ ]
  10. // 通过 Vue.extend() 创建的组件构造器,: J3 ~% C& c2 ^5 c6 V: F
  11. // 或者,只是一个组件配置对象。
    3 N" v: e. A9 n6 l* K
  12. // 我们晚点再讨论嵌套路由。. H" s# ^% Y) I7 G1 i! ^
  13. const routes = [
    ; l6 D3 R/ e: T: Y) i; N
  14.   { path: '/foo', component: Foo },
    ) H5 H1 B( B9 H% e7 T( {
  15.   { path: '/bar', component: Bar }7 h, }& e3 R3 z
  16. ]) M0 k+ H% M2 c: `! ^2 `3 ?

  17. & K$ t5 H4 ^! _' f/ q3 u
  18. // 3. 创建 router 实例,然后传 `routes` 配置( W1 Q; H* x2 W, N: N, I
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    , p/ J# F* C% P" H6 c
  20. const router = new VueRouter({: }  ^) v; p1 y2 H9 a
  21.   routes // (缩写)相当于 routes: routes
    ; U. R" C( T1 `9 j
  22. })
    ; J  i5 x) K$ b8 _
  23. , K$ t2 h( Q' |" Z/ I
  24. // 4. 创建和挂载根实例。
    2 y  [/ n8 R% [* X& I% m
  25. // 记得要通过 router 配置参数注入路由,
    2 `& f5 k( _1 a, Y2 }1 x! R9 ]
  26. // 从而让整个应用都有路由功能
    ; o+ O9 j" i* T! L
  27. const app = new Vue({, z1 p) H7 U, E( C, ]
  28.   router
    : G( S+ R; T8 d9 y! ^
  29. }).$mount('#app')
    * v0 R6 V4 n# {1 |1 m
  30. , i4 V9 A7 G7 J$ _+ P8 g
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

: T  j2 T( O/ j1 S0 e
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm. X2 ]# Q7 }$ g
  2. cnpm install
    4 l! _, Z6 n) W% k
  3. % A4 h  ~1 g9 P& B$ ^; f1 E
  4. # 启动应用,地址为 localhost:8080; Q+ Q! z# y; H3 ~" R
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:( ^  g3 |# \6 {& [, `
  1. cnpm run build
复制代码
7 h/ n4 y; j3 j6 e

* X  I- M) K! C- J' E& J. m
  h5 x9 V) w7 L2 ^7 j( Z' U# ]( G) M2 Q9 t

$ a! w8 H0 x' `( n3 k  Y
$ L' T* N+ B" \; W: Q$ I2 h" l% y
7 |5 x) M7 {% N9 Y" D8 K% d  K  A8 Q: V' b( K6 n: X9 O2 y- \

! b: A: [9 o% B1 Y
7 h; w$ J7 U& a* I
/ M1 h( J; A6 G) B, v) k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 20:57 , Processed in 0.153276 second(s), 22 queries .

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