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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

4 f$ S1 `$ U& D% g* [* y/ m
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

( w+ q1 f& E* W0 r( }* p: X6 q* nNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
, x8 A: f( u4 i4 G+ q! E% j
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>" D! u% d7 ?3 o, c; M8 V1 Z* ]
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    : |& J" X- l( g3 ^( {% }7 A5 I
  3. ; M$ e& P9 P. A) T7 k! @
  4. <div id="app">7 n* n1 U, w: S$ s
  5.   <h1>Hello App!</h1>
    ! R  W! {  ^: K' T3 j9 o
  6.   <p>9 Q2 Y9 ], h) r  c7 {6 n5 a
  7.     <!-- 使用 router-link 组件来导航. -->/ m  L) |2 [# T8 [' r
  8.     <!-- 通过传入 `to` 属性指定链接. -->) S$ W8 j& K1 S; D5 T) m/ V
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 --># W3 x8 @- C/ f; W/ \' Q
  10.     <router-link to="/foo">Go to Foo</router-link>% f( z4 ?6 f3 U3 ~8 |4 z
  11.     <router-link to="/bar">Go to Bar</router-link>
    ; `/ g4 l) z* p" q+ \/ P( r: ]% z
  12.   </p>
    3 k3 l, B! _" j1 Z0 o
  13.   <!-- 路由出口 -->- ^9 ]: y, ?  [) a$ W# t8 t5 V
  14.   <!-- 路由匹配到的组件将渲染在这里 -->' n) Y: i: Y  H
  15.   <router-view></router-view>
    0 F7 O+ `, u6 p1 x, a4 W
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)/ n& }" Q$ G! B/ H; P! g9 p0 R3 k

  2. 2 V) w) o) c' c1 w8 p
  3. // 1. 定义(路由)组件。; I$ L% E' q7 l# L5 [) u, |
  4. // 可以从其他文件 import 进来
    - Z. F9 Y. @6 G2 b
  5. const Foo = { template: '<div>foo</div>' }9 a% \$ B+ }7 j! ^
  6. const Bar = { template: '<div>bar</div>' }
    3 t' j9 }7 A+ k' m$ F
  7. * @2 {  {6 Y* b7 b
  8. // 2. 定义路由5 _% M' E7 `% Q7 k
  9. // 每个路由应该映射一个组件。 其中"component" 可以是$ n% E" D3 }% M, l: z
  10. // 通过 Vue.extend() 创建的组件构造器,
    ! u2 q- B+ C6 p9 S
  11. // 或者,只是一个组件配置对象。
    $ N' O% M" n: T0 H9 y) ?  I) O- m
  12. // 我们晚点再讨论嵌套路由。2 Y2 S6 {8 N4 J3 l, c- n
  13. const routes = [
    4 [+ h4 A+ x6 a6 O
  14.   { path: '/foo', component: Foo },
    2 V1 c/ o: h7 h$ A2 M8 z1 F
  15.   { path: '/bar', component: Bar }. i1 b9 S5 C" Q" ]' y
  16. ]3 P- H0 n! p) W; ^* j4 d1 {! A
  17. % R6 Q* I. O( ?1 a$ @
  18. // 3. 创建 router 实例,然后传 `routes` 配置4 E) t! U) T4 n4 z$ a
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    1 K- Z, X9 o. ^& y2 \0 W2 S6 @; j# Q
  20. const router = new VueRouter({
    & R' P3 Y" i3 J. ~( Q/ @0 z
  21.   routes // (缩写)相当于 routes: routes* I0 P; d% V% r7 P
  22. })
    $ p6 q9 F$ |" F! L0 D4 X
  23. * S$ w, R1 g9 m1 q
  24. // 4. 创建和挂载根实例。
    - E, s3 |3 w7 c1 v. d
  25. // 记得要通过 router 配置参数注入路由,; ^) A7 O' I2 g/ f' I5 N4 F2 Y3 F- {
  26. // 从而让整个应用都有路由功能2 S9 g2 t3 s5 Z. l. r2 i
  27. const app = new Vue({1 P" @/ E- T" F: m' H
  28.   router7 R* q1 z5 u& g
  29. }).$mount('#app')
    6 E# O2 x" C; W3 X  n

  30. 9 W  p" a9 S" U
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
: r/ @) }* j9 T5 Q6 U
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm/ d# m. d, ^/ M* F  s+ c7 L
  2. cnpm install
    7 e3 S/ I. p' `" }/ @# @# a

  3. 0 Q4 w' o+ c7 A' i+ ~
  4. # 启动应用,地址为 localhost:8080
    - Z4 ^0 t5 [' s$ E+ J' P; y% m
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
  n! c. W, m& t$ J* H- e
  1. cnpm run build
复制代码
2 @  Z3 n* V, l- B! @+ w
- U6 t1 t) q9 m8 C# z/ s% W

$ [9 J. _& I3 o# I& z
7 }# k: L3 h' Z+ r# p' P0 N/ y, J  `$ j
' G: O1 i" J+ F: g  e$ G! y
9 K# P# {- \+ n: T$ f* K( n
+ B  z+ \8 W9 B- k

& A2 s# }8 T6 `! R9 m/ h4 P3 _" U0 Z+ T7 R# ?
3 E% O7 C( C- r* Q  D0 b2 Q' C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 05:05 , Processed in 0.143469 second(s), 22 queries .

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