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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

9 ?6 r# M4 p$ ^% y) F, |
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

) v7 ^( S0 Y3 p/ x+ i" nNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
2 X' }  |3 H, p* t5 {( m3 x$ I
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    ; |4 `7 X& A3 O4 \  t
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>1 B9 q% I5 T& }2 L: w- i

  3. . Q! y: y6 W" T7 t! z7 d
  4. <div id="app">9 z  E: v8 y7 T8 a; |# [) t! p
  5.   <h1>Hello App!</h1>
    * R+ n7 X5 S$ @0 i# f, ]& h
  6.   <p>3 i# ]+ q5 r/ e% @4 f$ p
  7.     <!-- 使用 router-link 组件来导航. -->
    0 u+ [0 I" O6 z- U0 g6 m
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    ! e; a; O6 V  y( l+ G
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    1 J( `7 Y; ^/ U4 P$ m
  10.     <router-link to="/foo">Go to Foo</router-link>3 \3 }1 E3 `1 v$ u, R, \3 q: T, A0 K
  11.     <router-link to="/bar">Go to Bar</router-link>
    ' Y" U- a1 Z+ A* x' _
  12.   </p>
    " x" D+ B- z# X" Z1 }+ L
  13.   <!-- 路由出口 -->
    1 X6 r' W1 l6 E& Y6 A4 @
  14.   <!-- 路由匹配到的组件将渲染在这里 -->2 W/ A3 T+ z. |! T, @. e6 ^& w# H
  15.   <router-view></router-view>" o# [* V: D7 f" w4 `$ y4 G, A) U* z. _9 Q
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter), Q) M$ K" l+ r1 ?& o

  2. & a7 C9 K  d6 l
  3. // 1. 定义(路由)组件。% g( s# \( O; p
  4. // 可以从其他文件 import 进来  _7 A/ ]6 t. U& R3 [9 Y* c0 b, l! {
  5. const Foo = { template: '<div>foo</div>' }
    + a$ q$ z" m/ C. R$ U0 d
  6. const Bar = { template: '<div>bar</div>' }  G7 F9 R+ b9 @8 D

  7. , l% i. o) d8 u9 P" q/ \3 ]
  8. // 2. 定义路由
    , d1 q7 X- y5 T# g6 o8 F% Y
  9. // 每个路由应该映射一个组件。 其中"component" 可以是4 b' |4 @, B. _' I; [1 m+ Z" G
  10. // 通过 Vue.extend() 创建的组件构造器,
    # h  z# i9 K6 G- r4 O
  11. // 或者,只是一个组件配置对象。
    / F9 |0 D# M; b" @' n5 U: q* C6 T
  12. // 我们晚点再讨论嵌套路由。
    8 o- l7 B! k, @4 t
  13. const routes = [
    + M0 o6 O- b; S; E$ ?7 u/ W
  14.   { path: '/foo', component: Foo },4 b7 W$ _( c5 f
  15.   { path: '/bar', component: Bar }9 Q& a+ ^# w8 y/ f2 {- f
  16. ]0 B) c0 ~# W& m3 J7 _9 ~4 @7 O

  17. 4 z- x# s. _. c/ G9 x
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    ) V# J) N* k8 n8 r
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。  g# j. \9 ~$ p
  20. const router = new VueRouter({+ d7 _; V* D' e1 D3 M( v
  21.   routes // (缩写)相当于 routes: routes) u) ?1 C/ E! L- [5 }
  22. })& B+ m/ |) }" P6 O$ Z& ^- q) C
  23. $ j5 W2 w4 l4 v7 j! F" n# _
  24. // 4. 创建和挂载根实例。; y5 b! I. X. g
  25. // 记得要通过 router 配置参数注入路由,
    3 s2 |8 B5 X# }6 C6 a
  26. // 从而让整个应用都有路由功能+ o) d  p" I2 Z* r" R( r
  27. const app = new Vue({2 q2 N' I* {/ q4 x% N
  28.   router
    8 u: J& l4 q' g, d1 y
  29. }).$mount('#app')+ e+ z+ V/ r6 F* F$ w8 N0 R3 I

  30. . H5 e* a% P8 G  U) O# k
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
9 ^1 z8 `5 b9 T" e$ p( f; w5 d
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm4 J1 i' }9 }) o+ h0 f& ~$ E: J
  2. cnpm install2 [! J! i) n' O
  3. 2 i% t% }4 z. T4 ^7 ?- e
  4. # 启动应用,地址为 localhost:8080
    ' K4 c6 B" t* f8 v
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:8 a; [! G6 E! D# P$ z2 G
  1. cnpm run build
复制代码

3 L' U/ w' u% @+ H3 s7 j" ^5 g2 s
( o7 o, S5 V  ]8 o# ?2 D
# d( u+ e; d! b7 t! x# C0 A2 ], i: G3 \8 h7 s
" I1 w! F& `0 O$ P; _

& }& |. B! t7 @$ F4 f* o% g/ ]& d  {% P# e5 p5 s

2 j6 a) F( L4 Z! D# @" m3 I6 Q+ c" c/ u1 |

$ B8 W. r; c5 t/ ]& ?- ?4 V0 M! l3 W( T* g( d1 B# K" ^# M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-22 04:12 , Processed in 0.060639 second(s), 22 queries .

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