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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15620|回复: 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
复制代码
& \) s& e# U. k4 O0 s- @1 K% A( w( I9 E
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
$ b7 [( [3 M" O
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码! ]% q- K; _& ^' @" U4 x4 U# o
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>9 v& L* H) b; ~% {& }2 v6 l
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>8 X4 P: H* G% S

  3. 1 d: c, W" T  w
  4. <div id="app">8 ^& ^( D7 @! s7 Y. ]
  5.   <h1>Hello App!</h1>
    ( e5 g+ a3 ^- C' B2 `; ]9 E- Y
  6.   <p>
    9 `: I4 H5 c- v5 G! |* v
  7.     <!-- 使用 router-link 组件来导航. -->5 y6 ?3 {: Z' K3 U0 r
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    / k! ]6 g9 \/ g- b
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    . P( P4 G) f. o) o0 y' N
  10.     <router-link to="/foo">Go to Foo</router-link>
    & T% Z2 b) t/ K* A9 t
  11.     <router-link to="/bar">Go to Bar</router-link>3 u( d0 L  r; t4 }
  12.   </p>
    4 L2 @) X' v# }2 ?8 Q* w
  13.   <!-- 路由出口 -->3 b# ?9 ^  d# P7 s& h( S. D' z$ y
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    + F4 Z3 K" l8 ~1 C$ p6 G4 L8 K
  15.   <router-view></router-view>6 P# P% @3 r, T* t* H: n: j
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)& p, {& y: R8 w& A

  2. 8 b; _9 c0 @8 D
  3. // 1. 定义(路由)组件。
    ( d9 I6 I' [( b6 w% w: ]
  4. // 可以从其他文件 import 进来. O; f% }1 P/ ]( O/ ]; x5 h7 f+ n
  5. const Foo = { template: '<div>foo</div>' }+ J7 j9 s! x% w6 A% a
  6. const Bar = { template: '<div>bar</div>' }, [+ |4 u) y4 ^7 @* k9 Y
  7.   V* e4 [' Q2 b& E  r. W# |; s
  8. // 2. 定义路由: p% D( X: I9 ~. F" a
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    * g0 r6 E/ l/ Q( j. B" b; N
  10. // 通过 Vue.extend() 创建的组件构造器,
    ; S: N4 Y' y: s8 k( L+ ?. g9 a9 l/ V
  11. // 或者,只是一个组件配置对象。' t1 u; G! }2 |
  12. // 我们晚点再讨论嵌套路由。( s% |7 I" u6 S# B
  13. const routes = [
    ( c) g% Y, X2 _6 J5 M
  14.   { path: '/foo', component: Foo },! l% a4 B( n! S+ q' R" }
  15.   { path: '/bar', component: Bar }
    ' T  p# P! q7 d. w9 e
  16. ]$ S- G) k' Q, C, E8 b' B
  17. 4 z3 Q$ t6 A4 R6 D( c
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    ; u) s, P4 q3 w/ j6 r8 p8 n5 |
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。6 M6 i& v) s4 l+ }" M/ f4 t  n/ t, [1 e
  20. const router = new VueRouter({% D% w  T* x, X- R. J( P
  21.   routes // (缩写)相当于 routes: routes
    * A; N- M" D. s' N& p& t8 y* o
  22. })! c: w6 w$ m9 U$ Z
  23. 3 e' x( y2 r8 S1 D
  24. // 4. 创建和挂载根实例。' l& g6 W6 j6 A; V
  25. // 记得要通过 router 配置参数注入路由,2 p4 q1 X" S( I$ x: c. X* T0 E
  26. // 从而让整个应用都有路由功能
    3 s; Z* J) u2 l+ v2 F
  27. const app = new Vue({
    4 M+ `+ }7 f" Q, C' t6 u- n
  28.   router
    ! P+ F3 K5 N/ r4 z+ P0 n9 C
  29. }).$mount('#app')/ h( ^) M/ k% K9 b

  30. ; ?5 h  f' i) \5 {
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

1 m3 i4 K8 m+ e
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    3 \( R6 S  o, G) A- G, p
  2. cnpm install
    # F+ G$ R, n% E1 T; h

  3. 1 W/ ]0 ?* Z  L! Y1 B5 K. Y
  4. # 启动应用,地址为 localhost:80805 L+ K& R8 w- U8 `0 j3 F
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
, T4 V2 D) F* \0 Q- U) g1 ]3 o
  1. cnpm run build
复制代码
4 R, v8 y5 h5 n+ j6 A3 L* ?
+ w) \* G) B# R+ @7 j  i: v( f# A
) A8 `4 D! L. ~% V) o

! ?; j! I7 b4 r0 n$ a" x7 }& p! v" ^% t: B6 R: r4 X
; X3 @5 {8 r9 Q5 S
- w4 \- N$ K# k( [

3 K3 K8 s# y; y2 ]' ?0 Q( l" ?- m
  K, k5 m0 C5 D) j
$ z! T& P* D4 V
. |: G5 B% `4 {0 q$ f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 17:23 , Processed in 0.060391 second(s), 22 queries .

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