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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15484|回复: 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
复制代码
: s% ?% m: a: I3 ?/ o) h3 U5 P
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
7 z; \+ v) {6 P% R3 D6 Z
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码) ?9 H1 x/ h5 C# p2 P* t) v; m
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    3 L, g5 t! s0 u5 }
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>( V1 |7 o; b: P: v6 U
  3. 9 x" A4 R; y/ A: c
  4. <div id="app">
    ! ^) ~* H' @4 R& u% Z" y) X5 L7 q
  5.   <h1>Hello App!</h1>0 _, j+ M7 v' Y# W! w  z( X
  6.   <p>
    7 f* p" ^6 F. |+ t' w# j+ R
  7.     <!-- 使用 router-link 组件来导航. -->
    2 t1 N7 C! U  y7 E" w" G6 r
  8.     <!-- 通过传入 `to` 属性指定链接. -->3 \0 y8 \( |7 a) y8 ^3 Y* G
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->9 ]1 N/ l3 ~0 u6 U) @/ }
  10.     <router-link to="/foo">Go to Foo</router-link>
    / ?; I4 a% a6 n/ k. m" S0 D4 `
  11.     <router-link to="/bar">Go to Bar</router-link>
    , M, ]) k/ s) O, `$ b: o
  12.   </p>, c3 B7 E+ K3 N/ a* R
  13.   <!-- 路由出口 -->" y, Y7 h0 u3 _" r. w, S
  14.   <!-- 路由匹配到的组件将渲染在这里 -->/ O; i1 ~: p& n/ Q6 ], _
  15.   <router-view></router-view>
    9 a4 }, e/ s5 u$ @; u
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)0 Z' g" k3 N4 e- c+ s
  2. 2 q# b" p% n7 }! ~
  3. // 1. 定义(路由)组件。
    & [3 F" [) t" K$ |9 V
  4. // 可以从其他文件 import 进来! J% G& f: z, h  e2 Q
  5. const Foo = { template: '<div>foo</div>' }9 i, G! Z" Q2 t3 Q! }
  6. const Bar = { template: '<div>bar</div>' }
    4 X' ~3 V5 @0 f" _& Y
  7. # W$ N9 ~! b! a! F8 ]6 f
  8. // 2. 定义路由
    $ x* I4 g) N2 H; _) @2 }* [* L! Z
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    " D; x% B# a6 ~# C$ S) C
  10. // 通过 Vue.extend() 创建的组件构造器,; p+ o( l3 g- g
  11. // 或者,只是一个组件配置对象。
    4 i; ]1 w' A" u# ]1 z3 {
  12. // 我们晚点再讨论嵌套路由。9 u2 i7 [$ B& V
  13. const routes = [+ z+ z0 c; l$ c7 k- j
  14.   { path: '/foo', component: Foo },
    , l3 @# Z+ Z) Q3 S& }( Q7 h+ J
  15.   { path: '/bar', component: Bar }
    * i& J3 X* `. [! j9 H
  16. ]9 e! ?' O& K: P% B. d

  17. ! Y1 T' F3 j: U: L$ o3 I3 }; Y" e/ T
  18. // 3. 创建 router 实例,然后传 `routes` 配置; [- J/ C0 p- s7 b+ U2 a% s
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    2 [3 a3 B1 Y* o6 b' g8 \  Z
  20. const router = new VueRouter({
    $ l6 a- d0 b0 V$ q$ D
  21.   routes // (缩写)相当于 routes: routes
    4 Z8 }$ ^! t9 R  H7 k! a( I
  22. })/ f( a. l4 {& `8 R7 {
  23. 7 W8 J3 x/ L6 Y# y
  24. // 4. 创建和挂载根实例。% q$ u- r0 n% [6 \3 O" b6 I
  25. // 记得要通过 router 配置参数注入路由,# M0 B7 w' d0 R) _
  26. // 从而让整个应用都有路由功能
    ; t2 U5 Z& l# @# \9 \% |
  27. const app = new Vue({
    ( ~7 C# i* ?, V  S% ~
  28.   router
    9 W# G: a0 ]) ]/ B2 S
  29. }).$mount('#app')
    7 e0 s7 I8 }6 ^' u

  30. 6 B3 Z2 v! _9 \7 T! |
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
9 E- R" {; i2 W; C  z: y( |
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    / ^0 k5 p' t; U. A/ t4 Y
  2. cnpm install8 r+ P9 l: S0 _) x! Q- Y

  3. 8 V/ X" w4 o! R" c- E; [% w
  4. # 启动应用,地址为 localhost:80804 t& g0 v( u8 ?7 e" u
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
+ L$ Q2 ~8 ?' Z7 {0 F* \
  1. cnpm run build
复制代码
1 G/ D6 Y* F! Q% V. O  `

0 [) X9 c5 U" H. K
, P. {1 _2 @! B7 z. _) A' ?1 ^& y$ o% R  O' u& G4 M
. `: ^8 Q4 E; f. Q

/ s% P) l' _' Y; W
6 T2 [$ C7 X6 f+ r
1 \% d1 N0 s4 F, ?" H8 a
5 L8 O6 J7 X2 {& B! i4 y! ?3 L5 a) t1 R1 D3 U
- W9 @- A6 S; L4 q/ _  v3 O( d8 ~9 S! a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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