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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15904|回复: 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
复制代码
: Y/ l# [' f) T+ N5 f( E- e
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

) b9 Q! i8 o( X/ P' h4 w7 {NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
/ E' K& i/ {2 h
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    ! }! o% \; V0 R9 \1 J0 ^
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>! [& o( V0 P1 s% e2 f

  3. : }; F- d- W# K) H
  4. <div id="app">
    7 W+ q# D* c5 S: V9 `0 ^" u
  5.   <h1>Hello App!</h1>
    - ?+ e$ L% R9 }' ~9 Q+ _4 t
  6.   <p>
    : x9 }6 n6 y6 e  ?3 W2 @: l
  7.     <!-- 使用 router-link 组件来导航. -->1 \& v8 S% I2 z; l3 A
  8.     <!-- 通过传入 `to` 属性指定链接. -->, g# C0 B* z, a$ A5 C, J
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->% @  _7 c% L+ |: c" W" |; g6 i1 S
  10.     <router-link to="/foo">Go to Foo</router-link>. n9 Q* h; z7 F/ j' b8 H
  11.     <router-link to="/bar">Go to Bar</router-link>" R' a! F% D% _% O$ ]$ C" ]: O
  12.   </p>
    . n5 a$ _# R% m- L
  13.   <!-- 路由出口 -->
    5 ~3 m; I6 h# Q/ M- i! g% x
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    2 r: Q7 N+ s+ \1 H" b- T6 Q) J. w
  15.   <router-view></router-view>
    . d4 X: s/ Q- E9 @$ F
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    3 Z% [. g; u% b. ]8 G

  2. 2 v3 q$ M5 z8 ]! r7 o( ~. Y1 \
  3. // 1. 定义(路由)组件。
    1 E" {% p1 F4 i7 G
  4. // 可以从其他文件 import 进来" A* X6 ^& p+ i% r1 q% E
  5. const Foo = { template: '<div>foo</div>' }
    8 t* Z' E& z$ b4 D3 h2 [
  6. const Bar = { template: '<div>bar</div>' }
    1 U0 f) e0 j$ F3 x  k
  7. / d! N3 z4 j1 W2 |
  8. // 2. 定义路由/ Z4 c& K" m1 h# k; x4 }" Q
  9. // 每个路由应该映射一个组件。 其中"component" 可以是; G) {0 Z* T$ e4 {5 E! k
  10. // 通过 Vue.extend() 创建的组件构造器,: \# ?/ @4 S* h/ q
  11. // 或者,只是一个组件配置对象。0 N; }! x/ ]- @: S- w9 N
  12. // 我们晚点再讨论嵌套路由。
      j, B' [- t9 `8 N/ ?8 V
  13. const routes = [1 ]* f& z) M0 ]  L4 f/ ]
  14.   { path: '/foo', component: Foo },) X  h6 W( G8 T; l
  15.   { path: '/bar', component: Bar }
    # h  G4 f4 I3 @! X. K- X
  16. ]
    ; o$ W) U+ f! a" r: l# x
  17. 8 c! A. v+ r1 G8 B
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    $ D3 }4 I" i2 u, W
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    / J: p, a9 V$ w
  20. const router = new VueRouter({/ n5 F9 o- y' \  ^8 y" g- f1 E& k3 z
  21.   routes // (缩写)相当于 routes: routes1 d. L$ t. _# i4 j8 O1 W5 V( v
  22. })  \. U& I: C& e

  23. $ F( t, E; \; C& L
  24. // 4. 创建和挂载根实例。& g$ n' @# m$ M: Q) x
  25. // 记得要通过 router 配置参数注入路由,4 L8 q2 o1 h; u  h4 ^. a
  26. // 从而让整个应用都有路由功能
    ) m6 V  _# _: v2 v! Q' W' y6 F
  27. const app = new Vue({, e" T6 N7 ?/ ?, B1 C
  28.   router
    & @( [4 p/ S/ c5 F4 u
  29. }).$mount('#app')
    ' e' S( K2 y+ e
  30. 9 J: }7 R! m4 Y! c' G) X, n
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
$ a" S# J9 l0 v* v) x3 a2 [
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    ) m: _1 Q; j$ G+ `4 K* {1 E0 ^
  2. cnpm install) T" Z, Q- ?; o- h! ~2 i. ]9 W

  3. 4 b* V% f) n4 Y+ O0 p
  4. # 启动应用,地址为 localhost:8080
    : }8 w" r% \" @+ ^$ f. q' [
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:7 U' ~3 _  g6 a# \
  1. cnpm run build
复制代码
7 j' ]0 [) p% ^6 S  C
- F( t$ r. H1 d- R( N
" d* L5 P: ^1 E8 I

5 e) e5 X0 ]8 n; M( B8 n# z4 ~+ T. C

: q$ r  ^; ]9 D3 s. @5 _4 E5 K1 ]/ z  _/ s; W& f8 |7 Y5 q
3 t3 H* i; t! Y+ C* P

( S4 V5 l7 @. ^# k
0 e2 r$ c: q, e$ E( B* M' o+ I- [' H. r- F; h+ [' x) w% s2 w3 x( k) s  ~  Q( ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:02 , Processed in 0.056625 second(s), 22 queries .

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