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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15619|回复: 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
复制代码
" d5 x9 h4 L6 k# v* {6 ^- Z0 L/ k
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

3 z4 F: h8 _( g, I2 iNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码- r7 p5 |  u" u
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    $ c  ?4 B' [2 W4 O% D/ `
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    - s, r; |+ i& `3 L7 R: y$ G
  3. 5 ?% D& Z7 X. m' \  u" y& S
  4. <div id="app">
    * A. c2 \" M: u0 |1 Z
  5.   <h1>Hello App!</h1>
    4 |9 s' U. _% E4 p
  6.   <p>7 Y5 U% F7 A4 q0 C! V* ^  D
  7.     <!-- 使用 router-link 组件来导航. -->
    9 o6 N% P$ J) _
  8.     <!-- 通过传入 `to` 属性指定链接. -->2 K1 O$ f$ [" F( i
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->1 S2 E' i: l4 M
  10.     <router-link to="/foo">Go to Foo</router-link>
    9 x5 n. u) s1 X
  11.     <router-link to="/bar">Go to Bar</router-link>
    / u% R4 Z3 [. |" x9 n7 f0 m) i, {
  12.   </p>1 L4 _- C5 M- f/ k7 ~# R
  13.   <!-- 路由出口 -->
    5 D  ?3 H5 h( l  c
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    % ]1 O3 r' y2 P% a" T
  15.   <router-view></router-view>
    , y7 F( P/ Z+ ?  R/ v
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    4 b! s5 M0 ]; ?! N

  2. 2 L; A5 v( o( T2 A7 f" u2 ^! a
  3. // 1. 定义(路由)组件。
    ; @7 x- O" G) Y$ W7 v; f# ?4 V* o5 T: U
  4. // 可以从其他文件 import 进来
    / y! Z; Y1 B! q2 l
  5. const Foo = { template: '<div>foo</div>' }
    0 N& n  ]4 _8 p, |
  6. const Bar = { template: '<div>bar</div>' }4 D1 M4 T' {# @# x2 K8 b: ]3 g8 z
  7. ) R3 c8 m) r7 h) ^
  8. // 2. 定义路由
    ) Q$ j9 v0 C* F
  9. // 每个路由应该映射一个组件。 其中"component" 可以是3 v) k/ R) y; V3 g+ U& O7 Y
  10. // 通过 Vue.extend() 创建的组件构造器,
    5 M( k/ y! A" M
  11. // 或者,只是一个组件配置对象。4 F2 d7 k0 {( C$ h2 B
  12. // 我们晚点再讨论嵌套路由。
    2 ]. G6 {0 K# N1 K% R
  13. const routes = [' k" @) r" R+ r4 W$ L/ t4 X
  14.   { path: '/foo', component: Foo },
    & M' \! A4 P, q4 v/ ^
  15.   { path: '/bar', component: Bar }
    ! J$ e% A# v8 b8 D0 J4 S
  16. ]- z" ]1 u, U( B

  17. 7 }" i# `( u8 P6 W! n1 k- k9 r$ M
  18. // 3. 创建 router 实例,然后传 `routes` 配置, \- U' y# q/ T) s
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    " K, S, T& h# `2 F& F) E
  20. const router = new VueRouter({5 [( F* z( r0 G) ~
  21.   routes // (缩写)相当于 routes: routes
    3 C( ?* f2 Z; |' a! T6 m& n. e5 d
  22. })+ R! j" F1 d( q" g$ x, R
  23. + D" y+ w5 ?/ H3 U+ p
  24. // 4. 创建和挂载根实例。5 F( q0 ?1 g) j) \( L# f$ w
  25. // 记得要通过 router 配置参数注入路由,0 h' G3 M: U$ `8 s0 ?# A% ?) R
  26. // 从而让整个应用都有路由功能: z7 |2 o6 H% z' B) D3 J& Z
  27. const app = new Vue({. A  v  d. L' p+ W* A  M2 v" a9 ]' m# ~
  28.   router
    2 }$ y  [2 O0 O0 e: _! l5 h
  29. }).$mount('#app')% ~& V3 A' @: @: u' @2 j
  30. 7 t+ C% Z  ^3 ^- u: S, G
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
( z5 q' u4 z4 j" q, M( C/ H
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    8 \4 P+ {/ X) v# H& w: U
  2. cnpm install" k2 p) a# S3 b2 L& p" Q

  3. 0 }$ J/ T7 a$ t5 C9 M' v8 r+ k
  4. # 启动应用,地址为 localhost:8080/ h0 {) k5 }! f) `& U
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
3 u: _: @7 h) o) l7 |1 r
  1. cnpm run build
复制代码

* r2 Z2 q( s+ K( }4 c
3 I+ u. _6 ~- g5 w
6 R* _5 `& j! `9 g& M% {
. c- o* _! R8 w& W' I% N
+ A* q' S% J/ i, L% w; b8 N" ~" G& J. s
/ A3 P  b$ U0 b# D" S

* {0 e: Z8 Z7 E$ U: ?9 l
) L2 x1 C0 ]8 h- W! U2 s% a# E6 A) W' \( x& ]8 {" j9 I

) R: `" D  s0 i6 i% `5 B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 17:19 , Processed in 0.054066 second(s), 22 queries .

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