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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15625|回复: 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
复制代码
  X7 ~% ]" v2 u; V
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
) O  E( f! @/ N+ p4 p. M
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码. N$ m: a' P$ T6 C) r
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    0 ]  U0 Z. z3 c9 }
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>8 X- @* D( s+ |

  3. 0 @) d3 Y" \/ R; h3 C3 h8 [; N% h
  4. <div id="app">
    0 g% n5 r# J) y
  5.   <h1>Hello App!</h1>2 ~* i6 P$ `6 [) i
  6.   <p>
    - |* e; z% Y" C. {
  7.     <!-- 使用 router-link 组件来导航. -->( x& R( T2 U: l
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    6 r3 b+ F4 S: S% J
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    % q. R( O* Q9 @: j5 o5 s2 J
  10.     <router-link to="/foo">Go to Foo</router-link>- d2 A9 V+ Q+ w! t$ ?, @+ m
  11.     <router-link to="/bar">Go to Bar</router-link># T8 o% R. M8 u3 L6 r1 \
  12.   </p>9 s4 v( W) ^+ @. T9 J" ]: v1 n
  13.   <!-- 路由出口 -->
    & ~1 ]1 |0 }+ D' O
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    2 K( m3 q- Y1 s8 q4 Y
  15.   <router-view></router-view>7 ^5 [9 g& G2 \8 I4 `* L
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    7 h7 [5 g0 Y& p- E* h, \' w* F) i
  2. 6 t$ f4 a2 [0 h$ B
  3. // 1. 定义(路由)组件。
    ) q1 |( e. p# G& h" i. _
  4. // 可以从其他文件 import 进来4 D* ?, E& P4 b/ v( M
  5. const Foo = { template: '<div>foo</div>' }. \: W  _) M: y( t. P5 ~) h5 ~
  6. const Bar = { template: '<div>bar</div>' }
    + A7 k/ l  Y+ ^$ S* [
  7. 4 J+ b5 W2 i, @" L: V
  8. // 2. 定义路由
    / [/ o  [; U3 l3 r9 P
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    8 H9 |' E- p; F* M6 t) o6 ^. @4 J
  10. // 通过 Vue.extend() 创建的组件构造器,7 b$ Q, K+ ^) Y- l! t! y/ u
  11. // 或者,只是一个组件配置对象。
    : P8 [8 w% t( O6 y
  12. // 我们晚点再讨论嵌套路由。
    5 |4 {1 U# D( L) |
  13. const routes = [0 x* E( H& e  j) k9 y% r. [$ }- c
  14.   { path: '/foo', component: Foo },* z! m. h7 ~& |/ V+ L! v% v9 ?
  15.   { path: '/bar', component: Bar }
    ) R$ F( S8 w+ ]! J
  16. ]( ~3 j* N) Q) F& y9 A" t5 [
  17. " N8 P9 d9 a0 i( g9 Y
  18. // 3. 创建 router 实例,然后传 `routes` 配置4 U. g1 a3 ^% L% R
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    " q$ d, k/ ~8 c' I( x
  20. const router = new VueRouter({( n1 w) ]/ O% X/ u2 o9 u1 r  z  @
  21.   routes // (缩写)相当于 routes: routes9 t9 A, X) x# u4 F7 D+ r6 Z' P) r
  22. })- ?7 D' v3 x# h8 c, V
  23. . i) Y; \" J5 `+ ~% o6 T
  24. // 4. 创建和挂载根实例。
    / p- H: N8 V) r8 A. a
  25. // 记得要通过 router 配置参数注入路由,. g& B; P  y1 Q. @' U; W8 E' E% Y/ R4 q
  26. // 从而让整个应用都有路由功能8 x% F: i; a0 Y& e; }) E  q  j
  27. const app = new Vue({
    , ^* g( Y8 {7 t1 M2 F7 p0 m+ o9 P
  28.   router1 ^+ W9 }. s8 D
  29. }).$mount('#app')
    ; d& v* p" w/ D# y3 D

  30. 5 g6 J; L" m# J
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
- \' g, O! H/ J! H8 Z2 u6 U
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm: `- ~' Q, _' ?% F* l2 Y
  2. cnpm install
    / D. V; }+ ^+ n$ x

  3.   b; S# X9 M% O3 L1 c5 t
  4. # 启动应用,地址为 localhost:8080- x) p9 i: T  Y7 O* n3 d% d
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
1 S9 P' J( P- C( \7 v
  1. cnpm run build
复制代码

$ j4 b( k7 e7 ]$ |1 M' ]5 g4 ~' ~  O8 E5 p2 K& |) I
' \; n. i& f% t5 Y

2 ], b( w3 b, @- A" W* [2 O) c# m7 z( F9 k4 L
  L& I+ n; g  ^, P0 O7 O7 P

; }: }$ U% B/ V4 r. r6 k1 |: ?3 }6 e+ b* R) ?
7 ]; G- N# u+ L
) l# O) U2 E* c# [
8 |# a1 N- [7 p/ E' E; c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:45 , Processed in 0.060496 second(s), 23 queries .

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