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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 17162|回复: 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 k) O3 Q+ z' v" z; f8 p3 Z
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

( Z" _% d# F; }& J  v& k/ ^NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
7 w& `: }$ b3 G, W4 D& X
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>3 Q5 M. h$ N- ^6 o; z. [1 i1 \
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>: }& c% A9 `- O8 A! {* u

  3. , G% N) @" E* P9 N: }+ n" H' \
  4. <div id="app">* G+ c# ]3 b1 s. m; q
  5.   <h1>Hello App!</h1>
    4 {$ b/ G) m' r/ _, K
  6.   <p>
    ! H( K+ u; `! t5 n; L
  7.     <!-- 使用 router-link 组件来导航. -->
    5 |8 v' E" x" r; o! k( _
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    ( M8 k) [/ n' J; A
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->) g  E' L! \: o  k
  10.     <router-link to="/foo">Go to Foo</router-link>
    , j$ g, q( W. w6 S) }3 S
  11.     <router-link to="/bar">Go to Bar</router-link>; e' O8 F' S# a
  12.   </p>
    % R& N+ G* a5 k/ v; ^
  13.   <!-- 路由出口 -->. T7 N& H  w  p! T- P8 ]
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    3 b+ H0 ]! V5 S6 b2 Z) N0 N
  15.   <router-view></router-view>5 B# K1 r+ J, E5 [% G/ g8 N
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)* Z1 q4 L; z* H, D

  2. 1 c" C9 V* i. U; H( E3 ?; h4 K
  3. // 1. 定义(路由)组件。1 y1 z2 d! B7 a, ?( c
  4. // 可以从其他文件 import 进来
    ' b, e( Q/ y1 B& K9 F: w5 f1 n# X
  5. const Foo = { template: '<div>foo</div>' }
    - W' r! j. Q4 u2 W* Y' U
  6. const Bar = { template: '<div>bar</div>' }6 k, r5 F" T0 S# S7 B" o0 S1 e

  7. 6 j- b+ C0 c/ D
  8. // 2. 定义路由
    . I! q+ h* c. |3 K
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    / c6 M" ]* [6 T' `. v' u  w% u$ [+ w2 X0 u
  10. // 通过 Vue.extend() 创建的组件构造器,
    9 Y  R+ x! i( ?7 Y4 z' \9 q8 ~# d
  11. // 或者,只是一个组件配置对象。
    ; L& J' i9 K" \$ C3 ~' v# q
  12. // 我们晚点再讨论嵌套路由。
    & o' `( O: ]. u  Z5 ^7 }
  13. const routes = [
    6 p" ?) J; j# \1 g" h
  14.   { path: '/foo', component: Foo },
    0 a7 A# Y' z, |) w- P  `- W4 `
  15.   { path: '/bar', component: Bar }
    : K5 Z$ Q# l; V; U1 R
  16. ]
    & m2 Y7 Q, Z) S' N& a! Z

  17. 5 l$ s6 I& ^( p3 x
  18. // 3. 创建 router 实例,然后传 `routes` 配置( {% e$ ]* x$ M' D# J% r  P3 N
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    , K3 y: x! A9 c9 K$ S. ^- u
  20. const router = new VueRouter({; Y4 ?* c' w+ N6 n
  21.   routes // (缩写)相当于 routes: routes( ]# @- Q8 C# _. v# w: c  ]% |6 P  w5 ?
  22. })$ T) @3 j7 t2 H. b; `( x
  23. ) D  v. i6 a5 P9 G2 {6 V/ t1 l
  24. // 4. 创建和挂载根实例。3 d9 O+ s9 `( p9 G. n& e( H' @0 n# p
  25. // 记得要通过 router 配置参数注入路由,
    8 F% F" \1 V( {$ L) [5 `
  26. // 从而让整个应用都有路由功能
    / U- m. R2 @5 Y" `4 S) T) a
  27. const app = new Vue({  m' B  A% M2 y- h2 l3 n9 _
  28.   router# G8 _: r% h3 Y6 j4 O$ b
  29. }).$mount('#app')
    * }* v3 r2 q/ [" ?5 c

  30. . L& [0 ?# H4 T9 B. ]
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
" w; g3 g3 V3 |( M" I
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    . p3 c7 \8 ^! \6 ^) J# ^; f% P
  2. cnpm install( p# F9 E; ~* m8 R
  3. , L+ G' S4 w0 |1 ^9 c2 B
  4. # 启动应用,地址为 localhost:8080. h% M. K/ S* I
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
* g# i2 u/ W8 Y- P0 k
  1. cnpm run build
复制代码

# S/ ^7 O# ]+ B' ?3 P7 [3 i; Z- C) C  i
" j' M7 Q4 x* j# D" G. ^& _
) E# \6 X7 @7 k5 a0 |+ @* c
, }) f( _) Q3 w- E5 M1 ~

# o6 e" x6 o. |! g9 J3 y" V2 K4 E8 t4 `1 O: s- ]4 M# t& v. x/ ]
+ o3 C6 o& ^- r

3 n6 c- d% r+ t4 f& C. w- q- a! p2 u3 `0 K! V+ n. i; r( }5 a

9 W9 _7 s& z, P9 o4 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:21 , Processed in 0.065015 second(s), 22 queries .

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