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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

. o8 g* f0 d1 t9 R& I
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
4 F5 i" ]# z5 K8 K1 c  \
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
  P6 e- q) Y4 b
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    ! `0 q8 {. e. {% ]+ }5 T  s$ _  k, W
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    . l; \# p1 A$ n0 A! Z& p. B
  3. 3 E# X0 Z8 m' u! N, f; \1 @" X
  4. <div id="app">; q7 l7 s5 i, R+ p, v  ~; {# G9 u
  5.   <h1>Hello App!</h1>$ X; R+ H8 L) u0 ~
  6.   <p>, p. z# _- J1 g2 [  D! r! ^+ ]
  7.     <!-- 使用 router-link 组件来导航. --># S# p" ?: `3 S4 |0 [% E% H
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    1 i1 m% D  z3 |
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    * z1 c5 B1 @: r' k3 r* t
  10.     <router-link to="/foo">Go to Foo</router-link>: [$ w- _. j4 O/ d! h
  11.     <router-link to="/bar">Go to Bar</router-link>
    9 ?0 |$ ~- B' t  f7 q
  12.   </p>: i; v+ v) R) g2 t  h$ F6 m
  13.   <!-- 路由出口 -->  R6 G9 c$ |/ U( Q
  14.   <!-- 路由匹配到的组件将渲染在这里 -->1 q3 ]6 D2 ?6 v! k  P7 t2 U
  15.   <router-view></router-view>0 [+ U2 x7 a. R( t; _5 r$ f6 d2 N
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter). b7 S4 d  a/ t0 p" K, S1 t

  2. 0 K5 X7 y# D* P) c
  3. // 1. 定义(路由)组件。: y( |+ m9 i# m" P
  4. // 可以从其他文件 import 进来
    ; n1 N, q- s0 d  S% e
  5. const Foo = { template: '<div>foo</div>' }
    * c2 |( [9 S, W- A# v
  6. const Bar = { template: '<div>bar</div>' }& c0 j  S# j( n, F
  7. 2 \" ]5 T3 t- D( A7 i8 L
  8. // 2. 定义路由1 K( H9 O: A2 `( a- u! b2 t
  9. // 每个路由应该映射一个组件。 其中"component" 可以是! C9 Y9 d  b& l1 P. {
  10. // 通过 Vue.extend() 创建的组件构造器,
    $ k- n1 O; m$ T8 x. F2 p  k
  11. // 或者,只是一个组件配置对象。
    + h# G' y1 R! z  G
  12. // 我们晚点再讨论嵌套路由。! |! h; E3 }# w+ b( _; t. q( `
  13. const routes = [
    ' [% K3 _* x- G  }! r& S# j
  14.   { path: '/foo', component: Foo },6 Z; Q9 Z, m* F( w3 Y  V0 R5 r
  15.   { path: '/bar', component: Bar }
    7 Y; r- p& A6 B
  16. ]; p  R" y5 ]6 }+ G
  17. " b( e8 F5 O5 t' x# n
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    ) e1 c# v( @  F
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。7 P/ b5 G3 B0 r) a$ x* h) u. }
  20. const router = new VueRouter({
    4 R4 X4 Q' a: B' p" \* v1 y) G& E
  21.   routes // (缩写)相当于 routes: routes/ w  D, c1 |* c0 H8 O$ U2 L' U
  22. })2 c' r; e: @, a- V- b' o

  23. . a' b- q' d  _8 }
  24. // 4. 创建和挂载根实例。
    $ C4 G% U' o& p6 T, X- s" y; B
  25. // 记得要通过 router 配置参数注入路由,
    2 d+ c0 K* H8 q# f+ U
  26. // 从而让整个应用都有路由功能
      {+ M7 D! l3 P
  27. const app = new Vue({. ^5 E! R( Y3 w6 T" f3 A
  28.   router1 H4 H  \! }( r2 Q# C; I
  29. }).$mount('#app')
    6 m& T/ \* x1 H0 M" \  C/ d/ P* D, u

  30. ! q5 d# y$ o% }/ v; l
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

3 n8 t6 i7 I9 D  `0 ?- k1 C
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm7 @1 Y9 ^+ G4 t/ O: P# w) E
  2. cnpm install$ n3 ?; b8 u3 p) q# C! B0 F

  3. . V8 Z1 g1 d- g# w) P! T
  4. # 启动应用,地址为 localhost:8080( A0 {2 V3 O2 N, ^. r+ c2 O7 ^
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:" y- H6 H3 L; T' O0 a! M
  1. cnpm run build
复制代码
: ]" Z& @% N5 U/ ^4 M

4 u" ~7 S4 O& [, ~/ m: {- u/ L
; i9 [# W5 ?! y9 Z: U& B  @4 F( i$ R; x$ `" M8 x, M/ ^

% P* e& `: X4 ?
( Z5 y, w9 f( v+ i8 d' R
- i# F+ u& z& m+ K9 g' t5 t% d
( ~6 @& u; ^3 j# P1 z( A9 G
9 {; j3 q- Z4 |9 U
; _( }8 l8 U. V$ K# I, i# A" @5 o5 ]/ p& Z# u3 w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:45 , Processed in 0.055711 second(s), 23 queries .

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