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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

5 F$ f5 S) I" n5 x' J( l
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
4 Q/ k# B" _- o- ]" J' u* q
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
0 X/ h5 P, S. ]
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    1 |% Z* t; p! R4 u# ?
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    4 t3 ]4 s% R; g$ q* x; h

  3. 7 U% x# z/ b: u( y9 A
  4. <div id="app"># x9 `1 _( w6 W, d1 K0 Z4 Q
  5.   <h1>Hello App!</h1>* Q' l3 i/ H% C1 P
  6.   <p>7 f' p1 ]3 K4 J
  7.     <!-- 使用 router-link 组件来导航. -->
    0 S/ O& R# h8 L4 b, n
  8.     <!-- 通过传入 `to` 属性指定链接. -->: O$ ~3 L4 h- G& k
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    , Y2 P; `9 g6 l0 a4 P9 d5 U
  10.     <router-link to="/foo">Go to Foo</router-link>" g1 L  l/ `* I  W" P5 j! ]& G  N; b
  11.     <router-link to="/bar">Go to Bar</router-link>7 j* `; e# k8 g/ a1 o' b1 N, @
  12.   </p>
    ) T- \  ]0 R* T4 w9 z
  13.   <!-- 路由出口 -->, J; X" B& M) ~$ c/ ]
  14.   <!-- 路由匹配到的组件将渲染在这里 -->; B; k+ {6 I/ ^
  15.   <router-view></router-view>+ p9 T: [$ u4 o5 b  @  [4 X
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter): c, O# I3 y0 H$ F* j) `; a( u6 Z* i
  2. 7 t8 ?$ Z. q8 W; T8 P  q: J" G
  3. // 1. 定义(路由)组件。
    . e& b5 u+ }6 s4 F6 V
  4. // 可以从其他文件 import 进来/ x3 K- W5 K6 T( j6 l1 j4 o6 r
  5. const Foo = { template: '<div>foo</div>' }7 @. |: a8 a2 Z
  6. const Bar = { template: '<div>bar</div>' }0 [% u, b/ n8 M/ \, j8 c
  7. . C; l+ R' h, b) ^6 u
  8. // 2. 定义路由9 \3 v. Y9 B3 I
  9. // 每个路由应该映射一个组件。 其中"component" 可以是( Y0 T. |& T+ d
  10. // 通过 Vue.extend() 创建的组件构造器,
    ! ^  \# M5 h' Z: T9 M: p" L
  11. // 或者,只是一个组件配置对象。
    8 l8 n# ~( Z" O. W
  12. // 我们晚点再讨论嵌套路由。
    5 N' |* L! b( d# Z
  13. const routes = [6 K; ~* ?' X7 ]3 A3 _" _. b/ e) v
  14.   { path: '/foo', component: Foo },
    ' _) S" W: S) E& g
  15.   { path: '/bar', component: Bar }. E0 p: i1 e0 ~( |: p2 E  _$ y0 p
  16. ]" M) f$ W7 s. L1 k5 [4 a/ T

  17. 7 T  d6 ?, r+ K; ~
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    3 F7 _6 H% ?( k5 U* ]
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    # N; R3 @  _3 x% v0 e" X; \
  20. const router = new VueRouter({2 x' ]# S3 j7 f0 A+ I- G; `
  21.   routes // (缩写)相当于 routes: routes
    5 ~" r( g& v3 g- b# D/ E
  22. })/ E* F. m5 R  g

  23. : w% J; }0 O" [% l+ p
  24. // 4. 创建和挂载根实例。) r& a! g- Z+ }
  25. // 记得要通过 router 配置参数注入路由,
    + C6 T2 `" H9 c4 m# C$ I
  26. // 从而让整个应用都有路由功能
    3 ?7 |( {# ^9 B# I' x
  27. const app = new Vue({2 T6 ?1 E% P  W; ~. Y
  28.   router9 D; U9 J# L8 Z+ r$ g
  29. }).$mount('#app')0 f3 @2 `) J8 q- N

  30. . f3 [% ^: {& n; V
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
) S! k" m) U" j: _
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    6 a% P% B. _0 j- d- D$ s9 L
  2. cnpm install- k0 F' ~5 l& D2 b

  3. ! F& n2 ~. F0 u1 j. ?) p. i' e
  4. # 启动应用,地址为 localhost:8080
    % ~: H2 h4 d' N- N1 B% I4 W! ]1 D# @& m
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
7 X0 @# U- c% I& M. R. }9 w
  1. cnpm run build
复制代码
9 B4 M6 y4 D+ e* y2 r

: N) T. h' ^9 D9 B! C) n. r# y, `" n: N: Y' N' y  u8 ?! T
# C. s8 `( ?8 Y- }6 e+ p

+ p2 q6 A! W+ c
, a& r2 D0 W! E8 s8 w+ O, P* k) N: i: C  ^( O) D2 l
* R/ Z1 A( O. P0 X, L
2 i" L0 z6 W" X; g

  p( N( i; Z/ T- q1 G- K2 E5 X! R; B, i& z/ e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:18 , Processed in 0.055199 second(s), 23 queries .

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