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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

; r# o* X, K/ h3 ]* M) P
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
8 E/ d! H5 t% @6 |: H
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码* r. S! C6 ^' B0 X5 U  b3 X
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    6 G5 E& C  ^' U) I
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    6 W6 @* |3 M6 ?9 C! S2 @, U$ A  W
  3. 9 t9 B$ p7 w1 ?5 w6 e8 F. ]; V4 C
  4. <div id="app"># u  J, i  b7 H6 W
  5.   <h1>Hello App!</h1>* i% m; h' M; b/ ]8 e' h
  6.   <p>
      }$ y0 S: m; P7 t/ T7 Q4 \
  7.     <!-- 使用 router-link 组件来导航. -->
    3 _# b; t. y' N8 h0 D6 ^7 `
  8.     <!-- 通过传入 `to` 属性指定链接. -->' i, u" f4 b: ~# v; ?
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    $ C- M' n  J: v2 O' U
  10.     <router-link to="/foo">Go to Foo</router-link>
    ! P# f, _$ [8 I
  11.     <router-link to="/bar">Go to Bar</router-link>
    " q* _  x' s( y8 [: P$ h
  12.   </p>
    0 `' A* W: k  ?0 ~3 K: I
  13.   <!-- 路由出口 -->
    " R3 F$ Q  m- i) a+ p. i! u
  14.   <!-- 路由匹配到的组件将渲染在这里 --># ]5 @1 R( u3 v, u. k; H
  15.   <router-view></router-view>, c: y3 M( j( L  q7 a. u* i. d
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    - ^, \4 a1 A/ M7 X7 y

  2. 5 F  o( d7 f- r" y
  3. // 1. 定义(路由)组件。, o0 _* O  y3 d  u: r0 h0 f
  4. // 可以从其他文件 import 进来' K: M* Q* o/ I' b
  5. const Foo = { template: '<div>foo</div>' }
    - F8 y" v) z8 h9 S
  6. const Bar = { template: '<div>bar</div>' }  |# Y% D, S( q% ?5 e) E. y

  7. 3 k) I  `9 R, K+ {( |% P7 {
  8. // 2. 定义路由3 e7 o5 W* q3 f, x
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    ! i0 U( Q  H9 }! r* U0 x, p
  10. // 通过 Vue.extend() 创建的组件构造器,$ i' a. L4 r5 I3 O+ m! n( N+ p
  11. // 或者,只是一个组件配置对象。/ r/ U& q- x* \  W
  12. // 我们晚点再讨论嵌套路由。
    ; @% g- p# W8 d2 {
  13. const routes = [
    % w7 s% W$ f/ ~6 K" a$ z
  14.   { path: '/foo', component: Foo },  v, _# E1 p6 x: c* Z- r
  15.   { path: '/bar', component: Bar }
    " E! N% c% o' k  l
  16. ]
    3 E( F0 v& s) C4 M5 c& ^5 y: _* r; q

  17.   |1 t6 {2 v  V, L
  18. // 3. 创建 router 实例,然后传 `routes` 配置# R1 A0 r8 B# D4 Q) R3 b( Y6 n" ~
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。8 g2 h( W) t* U! p. z9 u: Y4 E
  20. const router = new VueRouter({2 {6 [* [9 s& n3 B
  21.   routes // (缩写)相当于 routes: routes
    0 [1 T: O' P" b% p! l# W$ i5 b
  22. })
    ) a' m: m0 A' j8 i5 A; }
  23. ; I6 g6 M7 o0 v4 I! S
  24. // 4. 创建和挂载根实例。% E0 N- N% r9 g
  25. // 记得要通过 router 配置参数注入路由,$ u" j4 b& }+ W7 h' J
  26. // 从而让整个应用都有路由功能
    & \% l9 D, N8 i6 S' |: A
  27. const app = new Vue({
    " m6 ~8 g# T. ^" ?8 p; e4 A) D
  28.   router
      y/ l1 s2 o: ]8 W4 K+ Q
  29. }).$mount('#app')+ T! v+ X# \4 ?8 n
  30. & Y; F, @" `0 e' y
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

. b1 ^4 J$ n! M, C+ f
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    ! e8 a5 V5 i* A) E
  2. cnpm install
    - P) G# K& Q2 o: h& `  N

  3. 0 g4 D( B/ e7 [* x: m
  4. # 启动应用,地址为 localhost:8080
    ( d. t, a- V. f" Y! N, r
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:! k6 k) |6 _. b' b- V3 u: Z
  1. cnpm run build
复制代码

  L+ q; ^; {/ ^! [: [# A; p
8 R+ ^+ I9 Q% e/ p7 Y8 B, k& O
; X. _" |, \3 J4 \5 q' d4 n9 r7 _1 z. ?! m4 b1 u

( k% M, R  I3 {% X$ @: y4 g: s8 P6 d3 r

. o' R$ [$ \& e7 T' a4 i, i$ k/ R9 t. ~! |9 _. F1 _# o, G$ j
8 k" B* @( {( G3 Z# W  U
) o; x/ C1 ~; n8 }9 R4 ^

+ ~8 k/ U  L8 V1 z' x7 g4 N' |6 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:40 , Processed in 0.082766 second(s), 22 queries .

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