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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

* ]1 @6 Y7 m4 u9 P: N2 q3 a
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
, i# U  I8 T4 U: p6 i2 k3 ^
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码7 H1 {& J9 ^* j- g
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>+ e/ ?% i' P2 @& {$ _
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    , ^% W2 r7 p" B! |! }

  3. 0 n2 N1 P3 v5 ~
  4. <div id="app">
    5 B% @$ k" i! t1 F: X4 k, k
  5.   <h1>Hello App!</h1>
    % ~/ p4 a: x7 z. k$ V
  6.   <p>
    6 [, K* M5 ]6 E! P, p. W* G: t  C
  7.     <!-- 使用 router-link 组件来导航. -->; s* f  Z- W4 e% u* u+ Z" n3 @- c
  8.     <!-- 通过传入 `to` 属性指定链接. -->. v( h( g) {: W
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->1 v3 N6 F" W1 a1 x* d* q
  10.     <router-link to="/foo">Go to Foo</router-link>
    : C4 h( N2 Z* g- n5 F
  11.     <router-link to="/bar">Go to Bar</router-link>1 r5 r( E4 |1 p2 ]& i& _
  12.   </p>( W, _' R* F% r+ M; ]2 o
  13.   <!-- 路由出口 -->2 b7 m: i' B# X
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    % R- o, _; j7 f: D/ H$ M
  15.   <router-view></router-view>. ^: l2 a/ Z" O2 J; h* ^* u* T
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)$ A3 B+ n: ]& A  W, Q

  2. , _0 }- Q1 M, Z! H4 M* g) ?4 N7 |
  3. // 1. 定义(路由)组件。4 m* V* B2 p$ n5 |6 G3 U) W1 f
  4. // 可以从其他文件 import 进来4 C3 v, T$ W+ T- w5 b, H
  5. const Foo = { template: '<div>foo</div>' }
      \/ W4 g) T# e5 `5 G
  6. const Bar = { template: '<div>bar</div>' }4 ]- A* H6 k% x* X

  7. " p- u2 b+ X' F* b' s
  8. // 2. 定义路由
    8 C" h, F  j$ T3 B
  9. // 每个路由应该映射一个组件。 其中"component" 可以是' d# w! N" N: A& v3 _
  10. // 通过 Vue.extend() 创建的组件构造器,6 r3 @& l$ [, M; ]
  11. // 或者,只是一个组件配置对象。
    " t/ g. d6 j' o, u
  12. // 我们晚点再讨论嵌套路由。0 S( t) {8 h8 o, F
  13. const routes = [+ J+ F0 e+ S$ W& t$ ^
  14.   { path: '/foo', component: Foo },8 ~. O2 M8 W0 F2 x
  15.   { path: '/bar', component: Bar }
    , m# x2 i0 o! S1 y0 p% D
  16. ]# N. k) B% W* b, X5 \- r' ^

  17.   A  G" Z& f3 `% I7 f$ ~! y$ ^
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    6 T# A/ r1 N* H; ^$ l/ a' Q
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。; t+ u* }6 r6 I. g, }$ ?2 x
  20. const router = new VueRouter({  @5 ^" j" O6 {) B9 o; }
  21.   routes // (缩写)相当于 routes: routes
    ) E2 r! Y6 @( N2 l- O
  22. })
    7 q+ n& U" p  k5 k% {
  23. ' T# M+ f/ u& W7 \
  24. // 4. 创建和挂载根实例。* Y* Y6 V: Z0 {# M7 ~
  25. // 记得要通过 router 配置参数注入路由,
    1 t% I; J, m- a
  26. // 从而让整个应用都有路由功能
    5 K2 M. Z; j+ y1 E
  27. const app = new Vue({
    * T7 [( z/ R7 P6 c4 g2 g1 u
  28.   router( l, m- r: A( t* n2 t
  29. }).$mount('#app')3 l6 d5 a( P4 y: v! v
  30. 7 d0 h1 ]- A/ k( X$ N
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

4 `: L7 {- C" ^* J
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    ( \% ]8 q0 T! t6 o8 ~3 ]9 p7 D# y+ ~: {
  2. cnpm install% J! O- |$ }# D" |5 I

  3. 6 d/ ?7 T' ~- Y$ W0 ~
  4. # 启动应用,地址为 localhost:8080
    + y5 f3 z6 q! S" R. O6 [$ J
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
9 ^& V6 Z5 \' U+ y. E& |
  1. cnpm run build
复制代码

' f+ P- ^+ V% M. {$ f5 z7 ?6 i  H" Y! y" j; Q% t
3 m9 G( O* W2 L$ Z# Q. ]

$ r+ B+ y( b' K+ q! q" G* x/ Z4 @9 R5 O
' P, s5 Q2 J. n; d. D
/ M5 y, ]3 k2 p& C; m; E4 o* a3 B
, A% W. a/ C1 r5 ~, b
' k; r# r# E: N% t; i

" H) n2 b! k  i  c
3 E6 ]% t$ l5 V( v$ T- X: T- T) f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 17:34 , Processed in 0.051924 second(s), 22 queries .

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