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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

# @% R2 e8 e7 s1 M+ W
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

- [, [/ Z$ d7 ~. U  C" A/ m0 V( ?NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码( z, u" s$ C- h; {
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>' c. u0 T- H0 j) G6 o5 @) p. K: ?
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    1 ?+ K. k* v" w4 g0 y6 b

  3. 5 o0 ]0 U) W: U
  4. <div id="app">' W+ l3 i) J" ~; u6 L0 z
  5.   <h1>Hello App!</h1># B( E4 u1 W& h" _
  6.   <p>; I5 O+ T2 C0 P- B  Q
  7.     <!-- 使用 router-link 组件来导航. -->
    ) v" w3 Y4 r. |3 y" g
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    , u, h, `) j% F/ r' c6 B
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->8 ^+ W" G: a* u" `: ~
  10.     <router-link to="/foo">Go to Foo</router-link>0 Z% q: J, \* e& S
  11.     <router-link to="/bar">Go to Bar</router-link>6 Y: g& a5 G6 N& |4 l: T# u
  12.   </p>
    ) d' r6 x  d5 Y2 y! [" _5 e
  13.   <!-- 路由出口 -->
    + ~1 v% l) r9 R
  14.   <!-- 路由匹配到的组件将渲染在这里 -->8 x) D# e: P& j
  15.   <router-view></router-view>
    3 t/ O! T6 H+ U. T+ I
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    # e  @- g' H9 d/ L
  2. % m; ]; s, H7 l0 D
  3. // 1. 定义(路由)组件。
    2 B8 M9 b& ^( |3 a4 [* Y
  4. // 可以从其他文件 import 进来
      e5 p9 a9 w0 p  q- ]. [! m) g
  5. const Foo = { template: '<div>foo</div>' }
    1 P* K& q$ h5 R( H/ x& Y3 h6 m+ G
  6. const Bar = { template: '<div>bar</div>' }/ s, ~9 _% I( o, f8 {; t; @4 y/ K
  7. 4 F' L0 {/ r6 L! U8 C
  8. // 2. 定义路由
    ( b' J- z/ r+ \" n, M
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    # Q; ?0 ^' K& R! }' A
  10. // 通过 Vue.extend() 创建的组件构造器,
    ; M% V; w' J' u
  11. // 或者,只是一个组件配置对象。' y. h5 {( P8 V( S& x
  12. // 我们晚点再讨论嵌套路由。
    ' F3 ]3 U6 n7 v* @9 Y
  13. const routes = [
    # z3 B- A" C2 {$ R: g! y
  14.   { path: '/foo', component: Foo },& c+ A+ c7 p, i& Y9 z5 h
  15.   { path: '/bar', component: Bar }
    3 q, Z, u5 k! g4 n; J. P/ s5 Q
  16. ]0 _* Y) R9 E- y7 J' _$ _

  17. 7 J' {- Q( Z) u* Q7 d
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    9 ?& U2 H# [1 T& b0 v
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    ) D* d4 Z5 K1 H) q: @2 e
  20. const router = new VueRouter({
    , u  p5 L) y- a; q5 s. `0 W/ v
  21.   routes // (缩写)相当于 routes: routes; P- {' E3 _* L4 {; d
  22. })
    % V" Y6 y4 E+ P; {; e' L
  23. 0 N$ i0 U0 D. j# {7 E
  24. // 4. 创建和挂载根实例。" I' r, s, a9 ^3 U- ?
  25. // 记得要通过 router 配置参数注入路由,3 ~5 G+ c$ E' D9 A7 d2 u; Q1 H9 X
  26. // 从而让整个应用都有路由功能
    ' d! Y' O) N/ _1 V3 K7 h" b. t
  27. const app = new Vue({6 G  b+ t- h/ o' P
  28.   router
    + b: q0 }# z" ^' n
  29. }).$mount('#app')
    % d9 z9 b4 D# d# j& |8 j0 F1 S
  30. * V9 B: K9 A+ m( c; o( Z" M: W8 @
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

$ l  b* B7 k% \5 C8 n5 g+ ?
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm4 d* |" s, Q5 k2 j4 \% ^
  2. cnpm install
    ' X, v2 H+ O0 t/ E) q& W
  3. ) M, H" Y( a( A5 K/ @$ s
  4. # 启动应用,地址为 localhost:8080
    ( r7 B, Z$ e( g0 ^1 j
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:8 U" K5 w0 U: \' M( n5 x4 ]  _
  1. cnpm run build
复制代码
/ B* Q) V  f' E9 a5 z- D2 f

  F0 e* b% p9 B1 ^4 E9 ]( n; W: m8 @2 E; C0 z8 Z$ y2 u3 u
# Q$ m) r( `( I& |# z$ \% ~
+ x0 Z" ^/ F) ?6 R
% m. c$ k, g/ i( i, D" v# a
2 _" q% E$ V8 M3 U0 j- Q$ T1 f
; ]' Y/ @$ V1 q# V, Q
. M8 ~8 @! s- i; K" p
: `9 ]5 j" Y3 c7 Y+ I
. v+ M7 @- y8 q3 h6 B) Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 13:34 , Processed in 0.080516 second(s), 22 queries .

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