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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12419|回复: 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
复制代码
8 ?5 a" _- Q' M* v0 W9 f
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

4 _4 K. H- N, x$ ^3 u7 u3 DNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
" m2 w- x: _% B5 t& l6 k+ U2 O
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    # L9 }# O8 r! m7 m( d1 ?9 Q( d
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
      ]7 t2 H9 h" w" P, W; o4 A! ~

  3. ( z5 \6 X& b  I, k
  4. <div id="app">! B- q$ P0 C3 H, d+ U
  5.   <h1>Hello App!</h1>
    ( d! E6 A% ^( g* ^. p, D
  6.   <p>, h2 E% E8 s- |+ G
  7.     <!-- 使用 router-link 组件来导航. --># K) n" \5 u. L# ^2 ]
  8.     <!-- 通过传入 `to` 属性指定链接. --># R- W6 I# h- V  g# p) B3 i8 q7 B
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->5 _' o  R& l% C, I2 F
  10.     <router-link to="/foo">Go to Foo</router-link>
    8 n9 M. K( |! v
  11.     <router-link to="/bar">Go to Bar</router-link>. U+ _8 H2 U+ n3 c5 u; k- S$ ~
  12.   </p>
    " S% ~- r; c- b" }8 d; w
  13.   <!-- 路由出口 -->
    ' k" d0 u! d" M3 u1 M7 _
  14.   <!-- 路由匹配到的组件将渲染在这里 -->  u4 G! t' q& {  L$ _
  15.   <router-view></router-view>
    9 f. g& c  {3 U) `' M
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    2 T5 N0 A7 J& }3 l. G
  2. 1 W  t, z# ~7 t; D0 Q
  3. // 1. 定义(路由)组件。
    / e# w; [/ U4 f0 c9 `! H
  4. // 可以从其他文件 import 进来# v* {& y1 _( J5 {4 G: e6 r1 P
  5. const Foo = { template: '<div>foo</div>' }
      M, j' s: _4 v1 }0 @1 h
  6. const Bar = { template: '<div>bar</div>' }+ ?' L3 d3 d- W

  7. 9 m0 X/ W) e2 o+ C( U2 r
  8. // 2. 定义路由$ v. ?- I8 A0 D% t# C
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    - G; _+ A, N) @5 v# |6 P. M: }
  10. // 通过 Vue.extend() 创建的组件构造器,
    $ m0 F8 L8 g( }: c5 \, W) M8 d
  11. // 或者,只是一个组件配置对象。6 D. Z! k5 x  d& s# r
  12. // 我们晚点再讨论嵌套路由。
    : [: R4 P) ^0 x/ i
  13. const routes = [
    $ I# }4 p5 C- H) G  V; o+ y% x
  14.   { path: '/foo', component: Foo },
    * ]# u4 ?& @0 t. X
  15.   { path: '/bar', component: Bar }$ a/ i4 d1 H1 F8 n' q
  16. ]
    ' a& U  S* B% a2 e2 X

  17. . \0 r5 g+ J7 ]$ h' H/ U
  18. // 3. 创建 router 实例,然后传 `routes` 配置  _$ S! M: g8 M+ G; H5 U! J
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    ! q' t2 M9 V5 L
  20. const router = new VueRouter({  e, f0 ]. P  c0 T7 o) d
  21.   routes // (缩写)相当于 routes: routes
    1 r# V3 g/ b2 B$ @9 D
  22. })
    " l  q+ j+ L: F
  23. $ `0 o" ]5 X% S5 S- a$ C
  24. // 4. 创建和挂载根实例。
      Y. S: t) `/ z' b4 N
  25. // 记得要通过 router 配置参数注入路由,! J% X" x6 r' ], m
  26. // 从而让整个应用都有路由功能
    1 r$ J. G. d8 m; \# x) {8 u
  27. const app = new Vue({1 X6 j. _, x8 z% ?1 z
  28.   router
    9 Z8 F1 M1 z- y) T7 u
  29. }).$mount('#app')
    1 }) L$ k& t1 B5 ?. G/ h

  30. # s0 q5 d0 u% C+ g5 r8 ?' h) d; t6 I
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

0 C; q' e! t3 b+ _
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    # |+ C, x1 N3 R; I6 d4 ]8 ^
  2. cnpm install
    + R5 P+ F# u+ X# k

  3. 5 I  s4 Y% Q' y- }* ~+ M$ p2 l
  4. # 启动应用,地址为 localhost:80808 U1 b1 s8 u. Q& l/ U1 C
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
/ ]8 Q! r) L' b  }: z$ P% `% Q3 ]
  1. cnpm run build
复制代码

- k- Q: m  \% z# Y8 z
/ n2 X; E: u" @' b( A' A7 C  R! y4 Y, f
4 J# s( W& [* R3 V' k2 \
( f) n* @) l& W) N# [
) x: F. }: P! z- }: W
. U1 E# w- F* P5 N2 s# N# @
9 A- O! ?4 l' V- K" O+ m

8 R# e) m. P! L+ ^
/ }, `' d1 j8 W4 y8 }& |
/ [8 Z9 c; ~# E: C! ~8 E) O/ x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 02:52 , Processed in 0.141311 second(s), 24 queries .

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