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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

- V& H- z0 T# M" ~& _8 `9 Q
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

7 m. L; X) @  z. w7 e' z& FNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码, f) Z7 s  a# F7 U# t
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>! x! h5 \  I4 x2 y+ M! Q/ U& z/ l/ [
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>, s: E. L; y! O' l
  3. 4 r* B6 @/ W- I0 H3 ~" e
  4. <div id="app">
    , T( t' W' K# Z: X) l/ i/ a
  5.   <h1>Hello App!</h1>
    & \. y8 c, ?2 b/ F8 c8 Q
  6.   <p>
    + n. @/ i9 H3 b' a
  7.     <!-- 使用 router-link 组件来导航. -->
    8 B5 K2 Q  ]  {+ t* n
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    # R0 k# R% a" Y! r9 z2 W
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->* k+ z1 `$ @: m7 R4 O5 i2 X
  10.     <router-link to="/foo">Go to Foo</router-link>
    4 [4 H2 U' Q$ t. x: J- r
  11.     <router-link to="/bar">Go to Bar</router-link>
    ; F! k0 E! T1 {9 U# k4 u" O
  12.   </p>
    ) F" ~2 s! z3 @3 E' @% l0 }
  13.   <!-- 路由出口 -->
    3 F* F% |' a8 s* w2 A' x" k8 Q
  14.   <!-- 路由匹配到的组件将渲染在这里 -->2 \( {1 C5 P/ v
  15.   <router-view></router-view>1 j) o0 E- E( m/ g$ t
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter): A' _5 y6 F8 Y: J$ {

  2. ! ?  U% O, U$ Q4 @$ u
  3. // 1. 定义(路由)组件。+ @" J2 i3 Q) }9 d9 w
  4. // 可以从其他文件 import 进来
    3 ?: ^( \* F# \4 Q
  5. const Foo = { template: '<div>foo</div>' }
    8 p$ o0 H( |- z3 a. T7 J
  6. const Bar = { template: '<div>bar</div>' }
    : v8 X( F! T. u" x' [6 m
  7. 6 C+ a3 I, r$ p* ?% M) n) G0 ?" _! O( R
  8. // 2. 定义路由, _  u7 N( y8 n$ A( B* ]
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    8 a, ]7 Z! s/ W# l1 U) R
  10. // 通过 Vue.extend() 创建的组件构造器,
    / z# U; X+ }" S6 F. Z/ {, \
  11. // 或者,只是一个组件配置对象。
    $ }* _* Q( r3 |; o& k% g
  12. // 我们晚点再讨论嵌套路由。: ~/ K; A6 ]# Y
  13. const routes = [; d, ]# ?; u( `) F- H' A% ~% \
  14.   { path: '/foo', component: Foo },
    . b# p" c8 p, t
  15.   { path: '/bar', component: Bar }) `* F& Y5 A- J
  16. ]5 F1 X9 u; z" Y
  17. ; s, {) M) E, e" ^2 \' V. R: A5 U
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    1 _3 ~2 R0 D9 I, ?2 w
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。- `. ]) G' v" j1 f/ ]" E# }
  20. const router = new VueRouter({. j% T4 F! U6 x3 l+ ?% }3 `
  21.   routes // (缩写)相当于 routes: routes
    1 r# E, X5 G) [+ t: j
  22. })$ e' y8 u# E+ O# _3 y- f% Z
  23.   X3 e( U- v1 F+ ]# ~" j
  24. // 4. 创建和挂载根实例。
    * w* C5 X' ]$ ^' ]
  25. // 记得要通过 router 配置参数注入路由,
    0 ]; w/ D7 h3 c1 Z8 B% G+ l
  26. // 从而让整个应用都有路由功能
    ' V# h2 w# p- i! P; J' Y
  27. const app = new Vue({
    8 x' }% c+ [3 j/ ]/ s+ Q  N
  28.   router# C5 _( |8 A+ I) z% T
  29. }).$mount('#app')5 U% _0 b! {6 }1 Z

  30. 4 E* i8 h% D' I. X! H! k8 X
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
% M8 v) p% `! k. Y2 i) Y* k/ u+ U
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    ; s* Z+ ~: W4 {, Z
  2. cnpm install  q9 c! V- E' g
  3. 9 q% i6 J% D( K& X  B$ q% Q1 ]
  4. # 启动应用,地址为 localhost:8080
    4 j/ s- m8 _/ ?& A4 ~2 `4 D: ^9 N6 [
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:( r6 X2 s3 P# T
  1. cnpm run build
复制代码

" s8 s! b- J4 h$ {9 ~
1 f1 o0 N6 y! F, G7 Z5 U% _
; u! m. L+ ^7 \4 a4 N
9 F; u, z& l2 n8 X; u/ M$ e: o& h' F% R
# Y% [: |! z* i5 j* D- [* g8 p' m1 ~5 R5 {% n" y

4 N+ U5 f% P! t6 w) l1 ~* \' L& _4 c! p" ~: l
/ X* v# J1 R" @. n/ f- ^
$ v/ V4 X  p. E7 Z) w

2 f* [( A! w: \( z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 14:17 , Processed in 0.055891 second(s), 24 queries .

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