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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15908|回复: 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 G; e: [- S+ D  X# P( t4 R& P: f
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

0 x  Y& B  x9 f1 WNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
1 j3 Y% ^, d5 g+ Y* N# B
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>- b0 u6 O& L  [! ]- f- o' f
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>! r4 }! B% U7 ~( j) T/ S0 ]- L+ T

  3. 3 Q- n( y! }% N: K
  4. <div id="app">* o5 g2 X* w& b
  5.   <h1>Hello App!</h1>
    : C& N3 o4 z3 T% _
  6.   <p>2 n. L. B2 l# x& Z4 C/ a0 E  I
  7.     <!-- 使用 router-link 组件来导航. -->
    $ }" P: a, H9 v9 H
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    % q: G+ _. v6 [4 Y4 l6 E* [) H
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    9 J' F1 @/ O4 h: T' R( B
  10.     <router-link to="/foo">Go to Foo</router-link>
    1 Y) Z6 _" w, `( l# Z
  11.     <router-link to="/bar">Go to Bar</router-link>$ }1 ~$ Y2 p1 S$ R% }8 c: T. E" Z$ {& s2 {
  12.   </p>3 z6 [. b+ l& G5 P
  13.   <!-- 路由出口 -->9 V3 \: k) n. @1 f( A
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    & A0 M/ d! V3 O7 {
  15.   <router-view></router-view>8 K; l: H- q/ V3 v
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)# F) f6 }. J2 H" p7 X
  2. $ Q! L6 H/ K4 C( o" H; C8 C
  3. // 1. 定义(路由)组件。
    + u* Z, u4 v8 o- |' S) l
  4. // 可以从其他文件 import 进来, [  U& T' L( F: U( R3 c6 E& Q: \
  5. const Foo = { template: '<div>foo</div>' }
    : F4 f7 V5 F- C! Y6 W# ~
  6. const Bar = { template: '<div>bar</div>' }
    ; s$ ?5 S1 _& B; C2 m" f

  7. - f- F4 W, B& o5 u1 c1 d
  8. // 2. 定义路由2 M! S0 {3 i/ @
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    5 s$ b/ V5 H" G2 _
  10. // 通过 Vue.extend() 创建的组件构造器,
    7 h# P7 i2 @  h$ ~3 y: ]
  11. // 或者,只是一个组件配置对象。( d" l" K' p# `" b) {
  12. // 我们晚点再讨论嵌套路由。8 h5 f9 y' [+ x8 ]3 r
  13. const routes = [
    2 p0 F4 R" K3 J0 Q( v5 N, A2 t
  14.   { path: '/foo', component: Foo },8 n. g5 E1 K! T1 r
  15.   { path: '/bar', component: Bar }
    0 ?9 K2 J! k( p# O
  16. ]9 x& b  j( W- q% v  M% j* a) T# z
  17. 2 }$ ^" x+ `' I5 d0 p- R2 x
  18. // 3. 创建 router 实例,然后传 `routes` 配置, `  r  M' |# O; }9 K9 f% o2 m
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    $ Q. W- _$ }: O
  20. const router = new VueRouter({
    " b, @- j$ j/ k- n
  21.   routes // (缩写)相当于 routes: routes0 x( k* g4 c0 Q7 |
  22. })
    $ r' E* {# T" z' q/ q% q9 z  m

  23. ' w0 i. f. M% n5 n- O5 g
  24. // 4. 创建和挂载根实例。- {- A7 n  G. U4 _& {
  25. // 记得要通过 router 配置参数注入路由,+ Y% C# A: _  c; |8 n- h" J% y
  26. // 从而让整个应用都有路由功能
    8 J# O* A1 c8 w) ?0 ~4 \# x
  27. const app = new Vue({
    ; Y7 |5 a7 x# B0 y5 O
  28.   router
    ' h8 V6 V$ ?$ [! x
  29. }).$mount('#app')
    ' b8 b9 a. y+ V% \3 _( n

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

) S% b( r" @. L1 j% {
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    2 w0 C1 \8 G# @. O
  2. cnpm install
    1 c7 c0 r8 f- e
  3. 7 N- r- q( h; p* c
  4. # 启动应用,地址为 localhost:8080" e5 V$ L. W# Q: J
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:, h6 J! l( Q5 A, G, z/ C2 q4 F  u
  1. cnpm run build
复制代码
, t1 H/ ~6 ^- H, g

  W& k9 _8 s8 g+ X' I1 W  d0 k) [: i+ J% B
2 w7 u7 c3 Z# b! A# f
$ o+ X" ], h2 p- d) o1 |4 b; {* p# R7 v+ S  E, L
0 k0 N  }8 r$ v! m0 p

8 |& X* a) h) z" i% G
4 {( D9 V: _- a, F
3 i2 P# p$ ^# D2 \7 H1 Z1 z& E7 n

4 L0 }( f2 y, ~4 j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:58 , Processed in 0.063443 second(s), 22 queries .

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