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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

" M) J6 r8 U6 ]' d
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

$ \7 I# B& B  L% O; P. ?NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
/ M; c6 R. u: O  U
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    / h) @! \; ?* }- q
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    : S% {, U0 _$ x: b
  3. : t2 C' E: H. N! ^# ]
  4. <div id="app">+ i9 s$ B; U0 Y3 o) P, I
  5.   <h1>Hello App!</h1>% Y0 J) R. b; V5 o) @
  6.   <p>
    ' h+ m9 J* G% R) ^3 r  X4 F
  7.     <!-- 使用 router-link 组件来导航. -->
    ) o0 r* d2 [* o+ E' ]6 t
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    6 S/ o4 t, {( y  i
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    ' Y; R& j( s+ q& H( I) Z4 ^  A
  10.     <router-link to="/foo">Go to Foo</router-link>. Y5 @4 p1 Z- t# [7 R% a
  11.     <router-link to="/bar">Go to Bar</router-link>
    , E( e; T6 s# X; i, @: ^, s! }
  12.   </p>
    $ _+ ^- R* r. y/ e
  13.   <!-- 路由出口 -->5 P2 N/ G1 @/ ?6 q; {
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    # x9 E* p1 X6 ^) Y9 R* j6 h( r; k9 M
  15.   <router-view></router-view>
    ) M* r0 b3 E6 m9 }5 W& r
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)9 V7 ^8 a, v3 l1 {% n8 @1 m
  2. * {% r! u0 [. T7 z- Y( D2 i
  3. // 1. 定义(路由)组件。
    0 _" O( T' Q" E0 d. T& b
  4. // 可以从其他文件 import 进来
    & @: R+ J8 w* f. c1 {; D0 L
  5. const Foo = { template: '<div>foo</div>' }
    + D& ^( i* V9 N
  6. const Bar = { template: '<div>bar</div>' }* E9 e' v$ g, [# N

  7. , \8 f1 e/ w: a( u
  8. // 2. 定义路由
    0 d& u  `  {0 s) s4 w+ k' T
  9. // 每个路由应该映射一个组件。 其中"component" 可以是" F* L) e5 y6 }" S- `
  10. // 通过 Vue.extend() 创建的组件构造器,
    % x3 w7 J& E& w6 C/ B. T4 H5 c$ \% `
  11. // 或者,只是一个组件配置对象。1 @; {9 r# z  ]+ P0 u' N
  12. // 我们晚点再讨论嵌套路由。
    9 h+ K, C8 w" ^1 P& I
  13. const routes = [
    - i7 d0 Z) j7 r3 C. e4 [
  14.   { path: '/foo', component: Foo },/ ~* K1 b, V0 M! X; D8 K2 C8 q
  15.   { path: '/bar', component: Bar }
    $ S# M/ N- T+ M8 V  j% ^- K
  16. ]( m! T% o# N' I+ b8 F3 H
  17. 9 C  I% o+ }8 N( p$ j' G  @& E
  18. // 3. 创建 router 实例,然后传 `routes` 配置! @8 `) @0 b0 n. e6 g: m- }, K
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。$ {( }! j5 d) }& |
  20. const router = new VueRouter({' O9 m$ @, W6 B$ J( g9 G
  21.   routes // (缩写)相当于 routes: routes8 u* v6 P+ [! P2 w6 U
  22. })2 ?, m0 U; z" S( r
  23. $ e$ |, x4 y  F$ x5 h
  24. // 4. 创建和挂载根实例。& U* o  q6 j( b1 u
  25. // 记得要通过 router 配置参数注入路由,- x. i5 u3 t, I& \' l8 T0 G# T
  26. // 从而让整个应用都有路由功能
    / Y$ Q8 d% k2 }( ~% T
  27. const app = new Vue({
    , r( O! W$ n* ?
  28.   router
    + H3 r0 X* U# F: ~0 A) @
  29. }).$mount('#app'), q* A, B; k0 Z# k+ v  O

  30. 8 i$ @+ O7 i" Z4 S. T3 h
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
* ]6 m8 @, g/ ]* y7 p. U7 t/ q
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm6 ^7 @2 M# M) u, J9 p
  2. cnpm install# R0 |+ U7 V8 N" I' C: l

  3. 2 o1 a% X7 B1 R$ x  h
  4. # 启动应用,地址为 localhost:8080
    # u1 i+ I' A# J2 V) N6 u# q. Q7 Z
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
  {% ?3 P5 [1 D8 ~4 d' n- r
  1. cnpm run build
复制代码
0 M% a" k$ l$ O' e: n* I2 k6 D. `

- O7 Z* C$ _) x/ X5 F, C5 R
% I! A" i/ S+ }% u" Z# l$ B: w1 S7 S! Y% y0 _) L* M
# \  n/ a, s* _" d0 a4 x5 d
( l" c" `" u( S. o

- U9 E& g" x7 Q0 K- A9 D% A0 n0 k* X" R4 |/ q3 @1 B% w+ @
2 z1 a! ?# s9 q! r9 ?
9 n, @3 M- x- Z" B7 p
' s' z4 }8 O  C, T& m% ?3 @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:13 , Processed in 0.055371 second(s), 22 queries .

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