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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15910|回复: 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
复制代码
0 i) T8 X: P2 N) C, l
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
3 h* I$ t! ]4 ^
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
! h/ W: r" F( V/ p5 H% e
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    , j# A9 i& }/ {; m
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    " N) Y0 N- U3 V$ m1 M- P

  3. ! X( Z, [/ r3 @5 b, J* H9 F
  4. <div id="app">0 w( B. p9 `# H" B
  5.   <h1>Hello App!</h1>
    7 X7 y& L& X" x. T$ u( N* L
  6.   <p>
    , f3 v; s" a* t+ F8 s6 C7 ?
  7.     <!-- 使用 router-link 组件来导航. -->  N8 M6 C5 N9 c( s
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    1 w1 ]7 d8 z! p- m. h8 u$ m
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->9 A% k8 _& q: k, E0 R% r/ ^2 U
  10.     <router-link to="/foo">Go to Foo</router-link>! e. K, p1 ^1 u5 O
  11.     <router-link to="/bar">Go to Bar</router-link>2 s6 z/ I/ X* |. a0 Q  s
  12.   </p>3 d5 @8 g2 l! k$ c1 g* D
  13.   <!-- 路由出口 -->
    , Y3 D4 B2 y! K9 E" a' B1 f
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    : _5 `+ F* ~5 G
  15.   <router-view></router-view>
    " B" ?; A/ p% _+ f0 G
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
      ~& O+ f; ~" R& d
  2. # _% K( S+ N4 Q! l3 G+ T3 {- ~  V
  3. // 1. 定义(路由)组件。- L8 V% B9 z' F  n( m' W) i  k, A
  4. // 可以从其他文件 import 进来
    # l0 T1 ?1 c4 h* s4 h  b
  5. const Foo = { template: '<div>foo</div>' }
    . @  b/ T6 b. d8 ^
  6. const Bar = { template: '<div>bar</div>' }
    9 W3 b# @: z6 I$ q/ p/ S
  7. 4 g: b7 N/ ?$ Y; N
  8. // 2. 定义路由
    : u1 g/ J9 E" s; w7 u
  9. // 每个路由应该映射一个组件。 其中"component" 可以是; ?2 l4 X! B- T* E# N
  10. // 通过 Vue.extend() 创建的组件构造器,
    3 x! }- f& C8 h' R0 |* `/ A/ s. }4 _
  11. // 或者,只是一个组件配置对象。: g; f, k! y& `  t, a
  12. // 我们晚点再讨论嵌套路由。
    $ P" R2 ~* S& {( F* L& w6 \1 H
  13. const routes = [
    ( S5 K. p$ `' w) u  W9 {
  14.   { path: '/foo', component: Foo },
    3 D  P" G/ N6 @) o) o6 T4 h
  15.   { path: '/bar', component: Bar }9 m$ a  A8 K) ^7 }; h
  16. ]7 Z: C. {2 e4 p4 W
  17. . }6 N* A& |9 w4 F; g- t
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    6 q6 H2 [* G  A/ b$ W3 H# b7 c
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    % `& l( v) Y& I" ]. R2 c: B0 N& a  K
  20. const router = new VueRouter({0 a* x) V. R( x
  21.   routes // (缩写)相当于 routes: routes: ?) {' F, Q* a  a( |
  22. })
    - y* i: p6 e/ J+ p
  23.   e3 C3 L' i# n$ k- l( s7 y
  24. // 4. 创建和挂载根实例。  a( m5 t3 [% H- [/ f7 T1 F
  25. // 记得要通过 router 配置参数注入路由,
    ) t6 n. w" V8 v: d% {1 ~* e  @# t, ~
  26. // 从而让整个应用都有路由功能) K# F6 X# `+ b) w% t$ X1 r0 n
  27. const app = new Vue({
    2 B9 u) j7 J" P- ?! N& }
  28.   router+ F, f0 z  F, |8 V# o2 A
  29. }).$mount('#app')
    3 F9 l/ s. m6 ?: D  R6 b9 M6 M
  30. , R# }+ j5 W5 G6 o$ A9 ^- O; p
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

, D, i7 G6 `5 p: o, @# L, U1 @
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm6 S* c$ J; ?, ~, }7 O+ V
  2. cnpm install
    ! U- C: D& o; m- Y

  3. * I/ u6 o3 T9 \1 t6 Q$ H
  4. # 启动应用,地址为 localhost:8080
    ' P# H' N. }5 `9 `* p
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
; I* U+ Q4 j7 X; {% C- w
  1. cnpm run build
复制代码
4 T. C# Q+ E( D8 `  ~
9 b) J2 P6 w# C; Z, m( U* l
* O3 D- F1 P( k! v

7 V' Y* }7 M6 ]' y' O, ?
* Q. y) \; y6 I0 [; D. p
, T9 e0 ~; p/ t& ~' M. h$ b5 x% `
& U% M: v/ ]+ m( x; B8 f; R2 ]1 t- t" e$ ?

# u# x% C0 ~1 t; I2 x0 w1 h9 x
2 _2 w9 J1 M# j6 x, f. \$ f0 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 23:36 , Processed in 0.074987 second(s), 25 queries .

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