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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16540|回复: 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
复制代码
% O5 t8 N5 g5 {4 j5 }" ~6 C, @
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
1 W% o2 V( J  H& ^! F; T/ a5 j
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
! ~, |/ j6 U- I! H# Z& P$ E
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    : A& w  E/ S: |; ^) ^. u+ N! P
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>$ k$ u# a8 \9 k2 Z

  3. ! o; [0 r. b. }0 J. R/ S
  4. <div id="app">
    9 _- A; y/ o4 d( t
  5.   <h1>Hello App!</h1>7 V7 F( C8 A. H3 r7 D
  6.   <p>+ K+ m* p5 A7 t. J9 U8 U: l
  7.     <!-- 使用 router-link 组件来导航. -->- u  k4 M6 N, h  q, C1 T8 |
  8.     <!-- 通过传入 `to` 属性指定链接. -->. U3 C' F/ ]% w" K8 `1 a$ y
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->1 y5 X& ]9 l) f1 a- b7 M4 m
  10.     <router-link to="/foo">Go to Foo</router-link>
    # J) D9 p1 }* Q: U- G* m
  11.     <router-link to="/bar">Go to Bar</router-link>
    4 g; ~. {+ o- k1 |* D9 A
  12.   </p>3 O4 w; I6 M- o& P( i; P
  13.   <!-- 路由出口 -->
    ( ^3 }! g, S+ d; S' W
  14.   <!-- 路由匹配到的组件将渲染在这里 -->% h# K+ g) j* D" P
  15.   <router-view></router-view>
    ; y- L. U- \6 _& R) P
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)% I# H" P' U$ G
  2. 5 L/ t# _/ ?/ t: W/ r+ }
  3. // 1. 定义(路由)组件。
    5 j# Z$ ?% W" P9 ?( ?5 d9 ~
  4. // 可以从其他文件 import 进来! g/ t. h5 p3 b6 j' K1 k
  5. const Foo = { template: '<div>foo</div>' }0 C+ y+ a5 m% L6 G: D
  6. const Bar = { template: '<div>bar</div>' }
    ) y3 N& q8 }( f4 R4 }& v- R

  7. 1 D6 q& {8 v5 n
  8. // 2. 定义路由2 s% [" w  J7 j
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    5 p( `/ _) F- L3 [" \3 V- E5 z2 z: k! ]  d
  10. // 通过 Vue.extend() 创建的组件构造器,
    1 N8 `+ g, {2 x& ]" l
  11. // 或者,只是一个组件配置对象。9 M3 |5 E0 N: H6 V: q( Q8 e
  12. // 我们晚点再讨论嵌套路由。+ h1 |9 K" d$ [6 |/ S
  13. const routes = [2 H6 c) t* x( s; E* ^
  14.   { path: '/foo', component: Foo },
    1 |4 d! f9 I) l
  15.   { path: '/bar', component: Bar }
    # C% J& H% ?6 ?7 {2 B; Z
  16. ]
    : C4 ?9 b7 f  v6 W
  17. 3 ?( W7 h6 f# ?0 N  `8 e* ?
  18. // 3. 创建 router 实例,然后传 `routes` 配置  L( R6 T: V$ B- H( Q3 u0 c
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    , c/ ]: H( J0 [1 t1 _
  20. const router = new VueRouter({
    & ]7 Y4 _, A; R/ f+ [
  21.   routes // (缩写)相当于 routes: routes8 u, E! e! J& K; T# {1 H
  22. })
    $ K: _3 a0 a6 U. y1 s6 i

  23. # Q# e3 p6 i9 {' ], U2 b
  24. // 4. 创建和挂载根实例。4 J; V+ R3 ^1 |
  25. // 记得要通过 router 配置参数注入路由,. {% K, r4 @9 }$ w/ E" w
  26. // 从而让整个应用都有路由功能
    # |" c. U" e. D- j$ S" f# N
  27. const app = new Vue({
    $ p( l; @( N( ^# y6 @- b
  28.   router
    0 e. r3 J4 ?4 s4 \- ~3 s2 D
  29. }).$mount('#app')5 Z- y0 F7 \( c+ b
  30. ; U, \; p& D4 U( E& ^& s2 C$ _
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

1 l; j0 a' D$ m3 r
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    ' w- v: y0 q; ~$ p! o
  2. cnpm install& K1 a/ p- R, o3 W3 E% [

  3. 9 \' M4 u7 @% Y2 U" v8 ~5 y. o
  4. # 启动应用,地址为 localhost:8080- n7 @: I  d% B3 Y2 D1 h
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
& ?. b1 @+ A" e2 R  O
  1. cnpm run build
复制代码
/ W7 g% v1 }3 C' c( h- t! ?

- d: x) M1 A/ n' C
8 T2 t/ d- \$ B7 l( c* Z5 t6 O+ U; n- J9 x7 M$ Y

& m' t- H% t0 E) g4 ?- B! @; o
1 C- n, a" K: n( Q+ p% |4 B3 \# q. S$ y
4 Z; E3 F2 x8 q3 M1 E- s6 S! k  K+ R6 K" Z  D* q3 I. c

2 o) Z% B! M6 R# x/ i* t$ ^1 u
  u3 L8 j: f& t# ]
: N* E2 {. r: d! C) M. Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:06 , Processed in 0.067561 second(s), 22 queries .

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