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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15635|回复: 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
复制代码
3 J1 W& E- U7 r# w1 k2 {2 J
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

7 g: G) l4 X5 N8 E; s2 VNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
8 |) k& H3 `; T+ Z) q5 w" F
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>+ g# S) T1 Q# D$ {3 M  i4 X& p
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    " p1 G+ ]+ {9 ~1 q1 u; c" Q* F

  3. ( p- u5 b9 u7 @& J/ G3 M$ G- a
  4. <div id="app">/ i4 z% {4 @) Q4 H3 C! |
  5.   <h1>Hello App!</h1>
    / }% p+ M/ V' D% }! c3 |5 B. p
  6.   <p>2 I" N6 U) q& c5 J
  7.     <!-- 使用 router-link 组件来导航. -->
    / F' P$ ]/ a9 r8 R8 r
  8.     <!-- 通过传入 `to` 属性指定链接. -->/ d: p- {" i  i# d$ b
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    " h* C4 p$ t# E4 q% `8 X! m. t0 c
  10.     <router-link to="/foo">Go to Foo</router-link>/ s4 {' D7 ^$ w+ M$ `
  11.     <router-link to="/bar">Go to Bar</router-link>
    2 e  Q& m; R. P. ]
  12.   </p>' F) l2 v7 }9 {. s7 w5 e( n
  13.   <!-- 路由出口 -->
    2 ]" e; q$ S9 d" g
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    . l4 m. \; F# f" {
  15.   <router-view></router-view>% h: s, N( }, k# K; i2 ?- Z
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)0 {( \/ Q0 C% T- b, v+ Z

  2.   C4 R& g  z* E7 N6 L7 v6 v
  3. // 1. 定义(路由)组件。
      Q4 u5 `/ K3 |1 p, \3 i
  4. // 可以从其他文件 import 进来' B$ G7 G# A- o% o  H# d
  5. const Foo = { template: '<div>foo</div>' }. x& v# D8 Y3 ?+ T3 |' s8 K
  6. const Bar = { template: '<div>bar</div>' }- G% t4 q5 ~  R

  7. / d5 r/ N* c# Z. H, t/ Z* C
  8. // 2. 定义路由& [0 r; [5 l) u4 V2 N6 p
  9. // 每个路由应该映射一个组件。 其中"component" 可以是/ L& Y& K' v5 G5 e/ \8 a
  10. // 通过 Vue.extend() 创建的组件构造器,
    # M9 ?/ f- ]7 a# F
  11. // 或者,只是一个组件配置对象。' n' X$ d4 u9 r  X* z  _/ }
  12. // 我们晚点再讨论嵌套路由。& L/ O4 t' B  P4 f( q" x! C
  13. const routes = [
    ; r0 i: v3 t5 m) `5 D( X
  14.   { path: '/foo', component: Foo },
    ) S# J1 E/ v5 |1 y3 T2 q4 S/ P
  15.   { path: '/bar', component: Bar }3 d6 g( U/ X, [) k" b, O2 F/ x
  16. ]
    + K+ j; k" ~+ T+ l

  17. ; M! r% p: t+ m7 p$ l" e9 ^! ~
  18. // 3. 创建 router 实例,然后传 `routes` 配置" k( g5 Y5 ?5 ]5 l
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。* H& `9 f) @( O0 u( ~. W9 ^) D) |2 `
  20. const router = new VueRouter({2 t4 E# g. d  B1 Y
  21.   routes // (缩写)相当于 routes: routes- ~5 H- P2 Q* k
  22. })
    1 A: G( s0 P, L
  23.   z0 ]0 X* D7 j
  24. // 4. 创建和挂载根实例。8 x) Q7 g3 Q0 U8 S/ M, O; q
  25. // 记得要通过 router 配置参数注入路由,
    % w# A4 m' O" a2 n- ?! S8 S4 `
  26. // 从而让整个应用都有路由功能
    1 M  X2 p9 R- \
  27. const app = new Vue({
    % @0 Z7 _" S$ X7 D& \
  28.   router: X$ |. W: {% G1 }3 S4 ~
  29. }).$mount('#app')
    6 c8 q6 ?+ Q3 Q) V7 T4 q
  30. 2 F9 A4 D" Q  t7 O" {9 z( _
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
6 [6 }2 w9 k' u) F; p
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    " a  D6 X6 j1 c7 H* f7 G$ o; I
  2. cnpm install. q+ d/ w! q8 i; Y. H* i4 s

  3. , P( S3 H1 S8 r+ i; A) \
  4. # 启动应用,地址为 localhost:8080* w/ l7 l& s( D" J* O* ]7 N% V/ e
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
& b6 j7 m0 D* K* X7 N5 C2 _
  1. cnpm run build
复制代码
+ j! P: P; o/ n

! E) r$ Y7 g: X8 ^1 t6 q3 X; X; G5 f. l1 X% u* s# q8 r

( D% N" f0 }6 |9 @0 L% @1 k  m1 U' A) \7 d7 W" d4 {, L
  ?3 Q( X, H- j8 E# `1 C) b8 F

# d+ v) t8 p2 }5 d  |6 k) ~4 G9 d, ]; g& M$ k" T
2 s" Q' k1 E) c
4 X& F# x+ o: [5 d9 D9 L# Z

  c# ~1 r% B6 W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 18:24 , Processed in 0.057261 second(s), 22 queries .

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