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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12409|回复: 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
复制代码
: N6 y; S3 b) o# G
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
/ h' c- \: {4 E* u
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码( P! k# t1 A2 q" `5 q! `' r* ]( ^
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>, t7 z' S. X( i% v' R7 @+ X
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    , T& J% i; v2 D1 a  o
  3. - e+ y$ S) m' I4 _% I
  4. <div id="app">
    5 @* z4 m" w2 c' M2 c( B/ F
  5.   <h1>Hello App!</h1>: f- I$ i# c9 z1 _; }& v
  6.   <p>" G+ R, `% U' k& i
  7.     <!-- 使用 router-link 组件来导航. -->
    2 g3 ]8 Q9 r8 a9 N! [% a% [
  8.     <!-- 通过传入 `to` 属性指定链接. -->/ e. U0 ]: B  R$ p' |" O
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->0 T4 y9 u% X, ?% b6 t& I
  10.     <router-link to="/foo">Go to Foo</router-link>- P3 ~8 G+ s6 e( {- M1 d% \
  11.     <router-link to="/bar">Go to Bar</router-link>
    # C/ f; T" @) d4 `. K% L8 D
  12.   </p>
    0 T, I! g' |8 A+ @8 x
  13.   <!-- 路由出口 -->
    % ]9 q0 x5 H" g7 {4 f" M2 f
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    ( `' U+ R2 p8 e4 R, p* f
  15.   <router-view></router-view>
    4 @/ V( a. L2 d
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    ; |1 J2 j  s0 z3 Q' V) x

  2. 9 S9 f$ A: s: V2 X2 Z9 J
  3. // 1. 定义(路由)组件。
    2 a9 z1 I& p$ {: |
  4. // 可以从其他文件 import 进来
    , j2 y6 _* J# J) F( l
  5. const Foo = { template: '<div>foo</div>' }" w+ m! `  \3 F( `5 k; ^2 N
  6. const Bar = { template: '<div>bar</div>' }
    2 v% z0 d1 h+ Z, l% [
  7. 8 T( \- D  X3 J9 e+ e* D- G% z1 \
  8. // 2. 定义路由
    & Z2 O4 b  Y( N' m% e' e5 a6 p
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    " L9 Z( w% h2 w) h
  10. // 通过 Vue.extend() 创建的组件构造器,
    : W, s4 S+ D: e/ T2 J, J( v
  11. // 或者,只是一个组件配置对象。" ]1 I5 S; \# d& V: W
  12. // 我们晚点再讨论嵌套路由。$ Z3 m5 Z* _- @9 _) e
  13. const routes = [
    # ]4 v! M" ^2 e* c
  14.   { path: '/foo', component: Foo },
    ' D& _* w$ H9 I+ N. ?
  15.   { path: '/bar', component: Bar }
    2 B+ q  N0 m" }; b" E  k( w
  16. ]' u5 h. {/ W- N1 p& M
  17. 7 a0 `- D+ q* j+ Z
  18. // 3. 创建 router 实例,然后传 `routes` 配置% f' G# d! b) Y' X  ]$ i- i
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    . L# u: H. ~4 ?. t# O( n
  20. const router = new VueRouter({3 H8 w/ F. k" P2 |
  21.   routes // (缩写)相当于 routes: routes
    , x% c  Q+ T: L. G
  22. })
    + v) @' F7 i0 U3 K3 o/ }6 N

  23. 4 i" A) J0 `, m
  24. // 4. 创建和挂载根实例。2 u: N( H& N0 w+ p
  25. // 记得要通过 router 配置参数注入路由,! k9 M! Q+ o& ^/ C
  26. // 从而让整个应用都有路由功能
    / W- K* Y/ K  S) ~5 J" w
  27. const app = new Vue({7 ?3 d& B. L" J2 ^7 u; Y' c1 _
  28.   router
    % r4 v7 G: |6 x3 i% I/ y2 L) P
  29. }).$mount('#app')
    # h* v  A% ?! c* s

  30. $ r' b# {& ^2 \( g, G4 A: _
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

5 x- T7 J9 M2 `
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm7 h+ Q" _4 m# g  z* u' i
  2. cnpm install
    4 D" O2 e0 n9 s
  3. ! S1 z8 P6 _5 d4 N. S
  4. # 启动应用,地址为 localhost:80808 [1 K. b2 X* Q5 H" M3 r8 W
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
' z. q  j3 k$ b( @9 F5 h
  1. cnpm run build
复制代码
+ u/ L8 T) [9 B2 j$ h) a: Q# ~" U  u

/ k) M! e1 Y7 S
; G# T9 \* a% b8 [0 ?4 n/ ~3 J1 f! h- [  D! T" R

$ m+ b! y3 c2 r  H
$ X3 e' d' E2 |7 _! D7 ~
+ f4 R  Z" [. t9 e4 j* }4 g0 f: [- b1 p  Z9 A
# ?0 _' t, Z5 K' |

( o) m0 b  r6 V5 f  V9 @) X4 t$ l! q: V5 U- W& ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:05 , Processed in 0.131082 second(s), 25 queries .

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