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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

. _$ ~& I5 d3 j0 S% w  U( Y
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
- {- Y8 v- U6 W) T0 }9 O( d
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
$ p6 h- [0 o: i- o
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    3 Z6 L/ v7 O2 k1 n3 e1 v5 H
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    ; _, w+ _" M: K7 F4 Y. E
  3. & t) g7 U2 ?1 N$ D3 j
  4. <div id="app">5 _* Z0 |3 w$ M
  5.   <h1>Hello App!</h1>, u* e% s0 G* I( u+ o) c6 F
  6.   <p>5 ]  v# O  Q7 @
  7.     <!-- 使用 router-link 组件来导航. -->
    6 `' q  P, B) [+ Y: e
  8.     <!-- 通过传入 `to` 属性指定链接. -->1 p+ t: I+ q$ m* S8 j; p# u0 Q
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    6 ~4 s! j+ ~$ l9 O
  10.     <router-link to="/foo">Go to Foo</router-link>- i% h# q( k9 N8 N* ?  T
  11.     <router-link to="/bar">Go to Bar</router-link>
    + M7 F6 ^# o& [5 }0 X- m0 X6 Q
  12.   </p>
    - _* q; P; ^# @' ^0 S- ^: R8 [6 U
  13.   <!-- 路由出口 -->4 Y8 M/ q, Z; V. _3 g& n
  14.   <!-- 路由匹配到的组件将渲染在这里 -->( ]- l" e& R3 k) s3 W6 ]7 L/ n: f
  15.   <router-view></router-view>
    ; N/ R+ p7 Q$ W' i* A
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    8 a) P- I( z4 L% k. n
  2. # }' c: l2 Q: _0 L" |$ I/ d) j4 ]) u
  3. // 1. 定义(路由)组件。8 Q( w2 m8 T4 V( |1 B2 H: a6 }/ `
  4. // 可以从其他文件 import 进来, w* P+ L& N; R* r2 U; K
  5. const Foo = { template: '<div>foo</div>' }9 }3 Q1 s* r' s: e
  6. const Bar = { template: '<div>bar</div>' }
    $ W) V& b* R. |1 `5 g
  7. 4 R: B. S2 ~: B5 @# [' Y) H
  8. // 2. 定义路由
    7 J6 K) @7 C: }
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    ! m( U/ ]3 _" v* f
  10. // 通过 Vue.extend() 创建的组件构造器,
    9 r; f0 \! l5 x
  11. // 或者,只是一个组件配置对象。2 o- n- j# r4 U; j  O
  12. // 我们晚点再讨论嵌套路由。' O+ d* z+ o, j# r( Q: [: o1 m
  13. const routes = [0 G) x* F8 |- w0 N+ C# I5 j5 s( D
  14.   { path: '/foo', component: Foo },$ R3 D* C2 i& l7 r4 B4 C9 D6 U
  15.   { path: '/bar', component: Bar }- M" B. n2 X4 n) k, R# P& j8 Q7 y) h
  16. ]
    8 A  D* P# l. D! t2 p- B
  17. ; D5 _4 s7 {% `' S: x& i
  18. // 3. 创建 router 实例,然后传 `routes` 配置$ K" ^1 @: ?" B7 L( r: D
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    ' }% N1 X0 ~/ y6 V6 B, a% M/ t
  20. const router = new VueRouter({$ b. d. n. k; D3 @
  21.   routes // (缩写)相当于 routes: routes
    0 z! |! u( W" i6 V5 \4 n8 m7 F9 S# s) ~
  22. })  G: f1 z- L4 E  w6 H* Y1 y
  23. 6 y5 t: J, [: `$ }/ u
  24. // 4. 创建和挂载根实例。
    ; _( K6 q; B0 [# O
  25. // 记得要通过 router 配置参数注入路由,
    % ^+ d6 v& o  I$ Y
  26. // 从而让整个应用都有路由功能* ?" ~0 @5 a% q6 O$ A& e  k
  27. const app = new Vue({9 Z6 ~' i' c1 X+ R" w
  28.   router
    . o' J# J9 ]* Z0 t3 }( @- |) N# Q5 [+ k
  29. }).$mount('#app')  ]$ m. T2 @% q% X8 u) E

  30. 8 u% g/ [2 Z! U' E0 R
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

& E/ p" X$ O5 K
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    ' r9 z9 u1 h: p5 Q
  2. cnpm install; Q& S* L; q6 Q# f7 v4 {

  3. 3 _5 Y: M8 u& K0 \5 M
  4. # 启动应用,地址为 localhost:8080% A4 j7 S0 g, X6 `$ f+ N$ t! |
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
( ]  O& V% x+ T4 x( \
  1. cnpm run build
复制代码
% {; A2 G1 `! M: n1 O% R$ G' j

$ S! U$ @) W1 b4 N
/ Z# M$ g( }8 l6 w  b* s5 D, Q8 j( p; y& d

" M& j* m# ~3 n1 W
+ p5 h: O$ B# g, P) H. A! w  w3 s: {" z% A7 {% b9 |

# K% P, c( k/ T- F- o; i
/ l& j8 S5 s* `. {# I
/ }7 [0 z  |7 d+ h- G# ]8 W9 _
& Z. i9 R. G4 C- f0 J- h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 03:03 , Processed in 0.132821 second(s), 25 queries .

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