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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12401|回复: 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
复制代码
9 \/ ?, M/ g5 H- p4 \
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

0 }% W4 Q; o. |6 y5 }NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
/ j1 l5 u. T9 ]! F/ P+ o
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    7 \9 U& b& J" h0 t/ t
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>8 ?% n! N$ d, A* l- L

  3. % P- B- h$ H: z' Y  |% `& f
  4. <div id="app">
    ( H# M5 f' v- Q  Y7 g
  5.   <h1>Hello App!</h1>( E4 d0 a# o& ]+ X: I* E
  6.   <p>
    2 d7 [3 ]  K& ~5 ?9 E) _
  7.     <!-- 使用 router-link 组件来导航. -->
    6 C: ~: k  z# b2 [
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    " Q, h/ v! D; c- v: L! m
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->$ J7 i- h5 k* Z5 Z) O
  10.     <router-link to="/foo">Go to Foo</router-link>
    6 Q1 h1 W# J+ m- i2 A, C
  11.     <router-link to="/bar">Go to Bar</router-link>7 j) K! @$ J3 R; C/ p
  12.   </p>4 ?8 `* e2 q; T5 M( b: a# _
  13.   <!-- 路由出口 -->
    % g4 q7 o% B" }: |. @* _+ f
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    + ]3 n! c' H7 B6 t& D
  15.   <router-view></router-view>
    . o. c( t! ~; Z9 i, o
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    / U; \. m2 Y' D. I

  2. - W( b5 m+ R' V4 O
  3. // 1. 定义(路由)组件。" |3 h6 d. a, F2 y  U" V/ G5 d3 |
  4. // 可以从其他文件 import 进来$ e1 f* A% w" g2 i
  5. const Foo = { template: '<div>foo</div>' }: Z1 X) i1 m6 o& ]
  6. const Bar = { template: '<div>bar</div>' }
    2 c. J; \+ ~1 K; H
  7. 8 i" [4 r* b7 T# h$ C
  8. // 2. 定义路由1 V% O8 E$ b1 {0 Z" {) _
  9. // 每个路由应该映射一个组件。 其中"component" 可以是& W. {0 C5 A3 u
  10. // 通过 Vue.extend() 创建的组件构造器,9 u1 k" _0 o4 f! n
  11. // 或者,只是一个组件配置对象。: s# n: Q" S& h
  12. // 我们晚点再讨论嵌套路由。3 U: |5 |! l) k: @
  13. const routes = [( i  U/ k- P" O6 R; Q9 \/ ~+ b
  14.   { path: '/foo', component: Foo },
    0 b" o4 \! w8 d- o! a
  15.   { path: '/bar', component: Bar }
    7 [& Y6 X+ F6 g% f/ N1 v
  16. ]/ k/ a) X- G! U7 ^. _' E

  17. , p% S3 [7 _: S' ]
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    : g+ \7 Y9 u$ _7 m) r
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    ! z' z8 q% G" m9 h/ ^; f* e: O/ E/ S
  20. const router = new VueRouter({" E1 i8 A/ D$ _5 Q+ {- ]* S
  21.   routes // (缩写)相当于 routes: routes; i% F/ P. J! l  z: S
  22. })( }  V0 {6 l$ L! A) x& T
  23. 1 e7 H7 N* `; f6 [: T8 Y
  24. // 4. 创建和挂载根实例。1 ]- X8 F* [% n) ^1 ]1 w
  25. // 记得要通过 router 配置参数注入路由,
    5 {# B/ @4 c/ r8 q6 E" j5 {3 K
  26. // 从而让整个应用都有路由功能
    8 u1 {- d5 J9 k" |
  27. const app = new Vue({
    - k5 t" {7 X$ y0 D* O2 S8 H
  28.   router1 A1 T$ v8 Z: m8 d
  29. }).$mount('#app')
    2 ]6 a$ ~* e  B0 r2 a3 o1 _9 M

  30. + k' d7 O+ E% Q; A# C7 [4 n
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
" O' p. i3 ]/ _, D
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm1 f# L; p: m8 R4 _- d9 w% Z
  2. cnpm install
    6 w- ^8 L3 r; H9 ^6 ?% S
  3. # b, p2 v# H- E: w
  4. # 启动应用,地址为 localhost:8080, [: F; d3 [# D; E
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:5 C- Z. T  E( ?: q4 `+ B: w
  1. cnpm run build
复制代码
. h' i; x2 i. p+ r- C% r; v

# R$ K$ t5 W- H
- k. u. c% T4 a; C- n+ U3 R. \7 q  S: ~- i& @% t& h; }
2 c7 B: l% f0 p# u

% M7 Y0 q0 b5 a8 _! s2 j% E: a' f4 _4 ]: I) h

& F; C4 j+ {/ N7 _/ i* g4 }  [+ f. H; O

% |9 Y! V# z5 ?. w6 h  C$ L
- h) F6 ], A  \7 q, p9 H( I- s6 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:35 , Processed in 0.107917 second(s), 22 queries .

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