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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 16105|回复: 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
复制代码
2 b2 E2 u% a+ O6 A6 j* C
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

  L9 j& U# X$ H/ t0 k3 ?1 u# wNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
6 L$ S1 s1 r0 Z# n* S' J# x/ n8 P
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>/ Z* c  c% ?9 c( b) @
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>  K0 i' l; }  [$ {: t3 o  A7 C8 M6 n6 ^7 k

  3. , d2 [! o- M0 c- d7 C/ ]
  4. <div id="app">- w: u! K1 _4 ]1 h
  5.   <h1>Hello App!</h1>6 F, @9 R  A! D: U+ ^: j2 H- a
  6.   <p>5 S- G) ~4 A" r) N: f
  7.     <!-- 使用 router-link 组件来导航. -->: U$ }7 I# ?! \5 J. a
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    ) {5 Y6 \$ i% |+ Z
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    : B$ p: m, L/ A6 k/ T3 r: n- o
  10.     <router-link to="/foo">Go to Foo</router-link>
    ! o+ r, n1 w3 \" x: x3 {
  11.     <router-link to="/bar">Go to Bar</router-link>$ g7 w  a% ?9 L( L
  12.   </p>/ y# a, {4 x; D! Y) q2 k# G
  13.   <!-- 路由出口 -->" J4 f% M& p. @  ^% C& J0 {$ N
  14.   <!-- 路由匹配到的组件将渲染在这里 -->( f* T- L7 ~' W5 V% l( J" [, \/ o/ `
  15.   <router-view></router-view>( ~0 P  S& F9 }; G( b) f
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)  R( T: Q$ ^' n$ P
  2. 8 c% ?3 X# V: i; l
  3. // 1. 定义(路由)组件。
    - L/ N; N* r9 P
  4. // 可以从其他文件 import 进来2 J! R: X, C' ~+ |. k& [6 [/ @0 `
  5. const Foo = { template: '<div>foo</div>' }8 X! {: z5 J" m# Y
  6. const Bar = { template: '<div>bar</div>' }5 D) ~& ?/ S2 O! w! y
  7. . C6 O2 U" t" h* F) z, v
  8. // 2. 定义路由' \1 f4 X5 u, N- J5 K% k
  9. // 每个路由应该映射一个组件。 其中"component" 可以是9 h1 S1 {8 U( K" Q* x6 k
  10. // 通过 Vue.extend() 创建的组件构造器,
    . o, z1 v  c! g+ V! ]/ j
  11. // 或者,只是一个组件配置对象。
    # j8 f4 J/ U" W9 t' v
  12. // 我们晚点再讨论嵌套路由。
    % W0 Z% W5 u* _4 i3 h
  13. const routes = [8 O. B5 l0 k8 M9 y
  14.   { path: '/foo', component: Foo },
    $ h, p  X, H  i& V  g
  15.   { path: '/bar', component: Bar }/ {) p$ _2 z; v" a: p1 U
  16. ]
    5 `( N* r- [7 p2 ]" _* H1 ]
  17. / W5 U1 D) M! _9 [2 G4 E6 H
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    3 A  I1 [& Y5 c9 F# W) T
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
      L9 x4 T+ _5 d0 @' |
  20. const router = new VueRouter({
    $ T4 `3 a9 d- N7 l2 B' M" j
  21.   routes // (缩写)相当于 routes: routes
      p  @) |) ?( B8 x/ ^
  22. })/ o! n# x0 w8 V0 N+ {; n/ z

  23. ) q, Z4 I8 j% ?3 T# f+ q
  24. // 4. 创建和挂载根实例。
    0 k% U! {) W+ O& ~
  25. // 记得要通过 router 配置参数注入路由,
    3 ]$ L. D+ b% V! k/ _% w; q' a
  26. // 从而让整个应用都有路由功能
    & U9 f4 s- x* y, l$ Q  b; k2 ]" x
  27. const app = new Vue({  Y7 F& z, y; R9 r
  28.   router2 w& I. U2 B: R& v' P! g  e. U. d
  29. }).$mount('#app')
    8 r4 f7 ]# _9 d, `
  30. " Q! u( K5 G" S  ]: w. e
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
( h8 R; C" n' t2 a/ ~
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    , a/ Y, g# H! S% N4 I7 j: A
  2. cnpm install  w* C0 x/ L! z4 ^* B
  3. * k$ }' ^, G0 u) V3 ~
  4. # 启动应用,地址为 localhost:8080
    0 a$ `5 h/ _! ~% z/ u7 X: d
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
7 v- x- c4 K% r7 j+ c
  1. cnpm run build
复制代码

& j) y7 [+ C% j3 k2 S9 k4 r9 R- S; I% l1 O' D
1 ]6 a! h" O+ \/ c

  B# u8 O+ n3 V; G3 K: P5 o6 c  l( [, x) S
8 k" Z3 S- e9 l9 a7 U' H  w

2 X) D8 J( i! W1 {
$ g- I1 c6 d6 D% Z. q4 ?0 ~" t% D/ U6 O3 m# g( U

% L/ y5 L/ c7 N' w' z1 T" f' D9 t. f8 F8 [% q  b7 [/ H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 02:59 , Processed in 0.088047 second(s), 23 queries .

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