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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12399|回复: 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
复制代码
" P. c( \: W, S, B
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

$ R4 b. s  C! f4 BNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码& U4 N: D7 W+ Y/ v2 k, ]
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    & r( c' z* ]& _. R  E9 E7 J% L
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>, v! i! \0 ]2 Z) P% a: `, P0 N- x2 p

  3. 7 J7 t9 X) E7 @. m
  4. <div id="app">3 T/ v, L) n- i: N6 Z5 @
  5.   <h1>Hello App!</h1>/ t! r& ^, f, u( i
  6.   <p>
    0 G- y5 x1 J- s0 ]  M( @
  7.     <!-- 使用 router-link 组件来导航. -->
    5 `6 N6 \% e1 {. `+ V
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    % j2 B1 I7 C5 \0 |, B
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->! I+ m6 m5 Z8 P2 y( S
  10.     <router-link to="/foo">Go to Foo</router-link>6 R3 Q* U) M  Q
  11.     <router-link to="/bar">Go to Bar</router-link>
    ' z8 b% @8 F' `8 R3 I1 r) x
  12.   </p>
    " M8 y' B+ G% Y
  13.   <!-- 路由出口 -->* Q  x& m3 T' [4 q+ ~. j/ v, d
  14.   <!-- 路由匹配到的组件将渲染在这里 -->3 L$ s* k5 N, H, N9 M! t
  15.   <router-view></router-view>) f) j8 ?3 }1 Q* ?/ @8 Y# @
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    - q) q! Q/ q  y, [  [

  2. 2 r+ p5 O; m* {! O5 y- z
  3. // 1. 定义(路由)组件。2 R. e& b  [3 z' f
  4. // 可以从其他文件 import 进来
    , ~( b$ ^  Z# f5 Q
  5. const Foo = { template: '<div>foo</div>' }: C1 h7 m/ \( }/ R9 i
  6. const Bar = { template: '<div>bar</div>' }
    , v: ^) a0 m; _2 W# ?

  7. & o$ w0 P" e  I; x% t7 C; D
  8. // 2. 定义路由% T+ f5 Z! ?; i
  9. // 每个路由应该映射一个组件。 其中"component" 可以是6 {! g/ ^6 @* G( E6 R% t
  10. // 通过 Vue.extend() 创建的组件构造器,
    % P" m: H: H* H& t  t1 z6 \0 g3 s( ~
  11. // 或者,只是一个组件配置对象。& n: U% |! \/ w
  12. // 我们晚点再讨论嵌套路由。# M7 ?4 ~& x7 B  U* s9 D
  13. const routes = [/ [4 n% _$ F1 h% Z# j, Z  B
  14.   { path: '/foo', component: Foo },3 V6 W3 F% Y, U# e2 ?7 p2 ~7 C9 p
  15.   { path: '/bar', component: Bar }- v# h3 Q3 k/ @& w# n( S
  16. ]) N: Q: r+ \3 f/ ^7 d; O# P

  17. " k3 U5 O9 l+ P' |5 x
  18. // 3. 创建 router 实例,然后传 `routes` 配置% F/ }' `( V  ?7 G! z2 p  I
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。2 ?/ w9 L/ j2 Z+ V' {2 s# t( `; e
  20. const router = new VueRouter({) u/ b5 j8 b0 w
  21.   routes // (缩写)相当于 routes: routes
    , T- H0 p" X# j  I2 U
  22. })2 L) j$ S( I" h( H. |
  23. ! ^. m- P4 Q4 u: c, i  R/ O, m9 P
  24. // 4. 创建和挂载根实例。
    6 k- D1 B* R% w) k) ^& U
  25. // 记得要通过 router 配置参数注入路由,. U6 P4 |8 r3 g+ i3 b# A1 J* ?, C
  26. // 从而让整个应用都有路由功能
    % H; q1 _& v# E
  27. const app = new Vue({
    2 J" v0 w3 _$ x8 T  q8 H
  28.   router
    2 t) ]% L! Y7 ]! `5 u8 m" `- t& R
  29. }).$mount('#app')
    $ f$ B+ R8 Q; d5 G" s

  30. % e* X' M3 Z4 ~# _% O
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
8 {, d1 ~% ]. b& F
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    : k! D( F! }0 s1 Q. x" y
  2. cnpm install2 n" t- n7 U7 |5 V# T, s

  3. : Q$ u; ^! b0 `1 C! i6 ~* F
  4. # 启动应用,地址为 localhost:8080
    8 i3 D$ V$ j. a1 ?
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
* Q/ O  e& U- ^9 S( v+ p
  1. cnpm run build
复制代码

$ l/ N" W! J2 w5 |$ J% Z. u" y$ K* s
1 f/ n2 g9 P9 E

/ l. c' ?) E7 w" H  B! S9 t
  `. \3 [7 o' b# c2 `9 ?; p
  R. }$ [& T. c# ]* i( d4 O1 L' J: T' U- L0 r

/ K" g9 \  X* f, W7 d0 l; k) |' I1 F4 w3 }6 F( `/ G
$ A. v$ [" E* _2 \' w$ e' ~6 {- h. ]( J. X

( |& }/ b8 u" n+ O- c! J, A# c# S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:12 , Processed in 0.191081 second(s), 23 queries .

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