cncml手绘网

标题: Vue.js 路由 [打印本页]

作者: admin    时间: 2018-7-4 11:44
标题: Vue.js 路由
本章节我们将为大家介绍 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
复制代码
+ d& d% m' h1 ]4 `' S7 b

: j  C% W) f4 U( INPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
# ]0 {4 j, q' E
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>* a- v: j/ [( }8 L/ I0 s
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    8 u3 Q  u6 O! R

  3. & b6 r4 P& C* q# C- |6 v
  4. <div id="app">) w1 L/ C6 B2 e3 u' j6 z5 h& X# L
  5.   <h1>Hello App!</h1>
    1 N" A, V% u- _, Q
  6.   <p>) f: f5 Z8 n- J4 C  w6 ?  t
  7.     <!-- 使用 router-link 组件来导航. -->
    & E/ q6 y' c! Y$ v
  8.     <!-- 通过传入 `to` 属性指定链接. -->- r- W8 o! a& l4 Z5 r- j1 O
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->" ?3 ?& A& w& A7 `
  10.     <router-link to="/foo">Go to Foo</router-link>$ C4 _8 e4 d* t) Z
  11.     <router-link to="/bar">Go to Bar</router-link>
    ) l, ~1 K( [; N& J
  12.   </p>
    9 c/ y0 O" V% i6 m/ v8 s
  13.   <!-- 路由出口 -->
    , Q4 s; S! y, f" z6 |
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    ; z$ ^+ `. O; ~* ~' T' }  J8 P
  15.   <router-view></router-view>
    " U* K0 l) ]% [% S) ~7 `. K: M7 h
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)
    5 x' o: o( \& Y, N8 ~4 z. Y

  2. ) S! j$ ~4 E+ {+ y1 ^9 U2 n& O$ Q
  3. // 1. 定义(路由)组件。! p: ]5 R$ l9 b; W. w
  4. // 可以从其他文件 import 进来
    ! B4 F2 U' p; \- k3 }
  5. const Foo = { template: '<div>foo</div>' }
    ' |; D2 V9 Y% c$ s2 a; x! k
  6. const Bar = { template: '<div>bar</div>' }  h' y5 M, Q. E( G% u5 E

  7. 2 Z$ ]+ L$ \+ ^" ?- t+ ]
  8. // 2. 定义路由
    * Q& V& c  B. n2 X; J4 _) R1 C
  9. // 每个路由应该映射一个组件。 其中"component" 可以是3 L( M9 F' P; u- Z
  10. // 通过 Vue.extend() 创建的组件构造器,; e: v2 ?2 h( L' X# Y( l$ ]
  11. // 或者,只是一个组件配置对象。, x% g5 N9 ?( n5 f
  12. // 我们晚点再讨论嵌套路由。
    7 H' s- x* @9 _; x0 x  a! g
  13. const routes = [
    1 k, y& X* G3 V  a& P$ x* j+ ^
  14.   { path: '/foo', component: Foo },
    1 @  Z0 ~, N1 |7 h" J
  15.   { path: '/bar', component: Bar }- g8 ?& H  X4 G0 x, E7 q  T
  16. ]* T4 P# `" o- u; E0 x  I

  17. 5 H/ ?, y! @% Z; p! a
  18. // 3. 创建 router 实例,然后传 `routes` 配置, K% H# E1 e  d: p
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    0 m7 d6 C/ h' C9 C; {1 G3 s! L0 k
  20. const router = new VueRouter({
    3 X' T+ i6 k# _- B0 X
  21.   routes // (缩写)相当于 routes: routes3 a; z8 S: E- _; G& Z
  22. })
    & J  z; C4 ?! P
  23. 1 ~  Y1 m. Z- h9 B9 v/ V% W( T
  24. // 4. 创建和挂载根实例。0 Z9 q" h0 }' F  ?. X
  25. // 记得要通过 router 配置参数注入路由,
    " {2 d! {3 E, y6 M5 S8 q4 S
  26. // 从而让整个应用都有路由功能
    0 O2 F& V5 J0 Q3 I5 |
  27. const app = new Vue({- Q2 j- T5 c* _. O/ V! a
  28.   router
    6 }0 v& |; k5 e( r" {" V& ]2 z
  29. }).$mount('#app')
    ) q. {; T: V  B3 b+ @) R$ {) o
  30. 8 r4 J" T3 L0 U/ g* i
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:

% `: `8 O; w- S9 O2 X
你也可以在 Github 上下载:https://github.com/chrisvfritz/vue-2.0-simple-routing-example
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    4 C0 K0 b6 y( Y' S6 @! u% D
  2. cnpm install
    ( O5 g7 h1 K5 ^, f
  3. 4 c" C; f! B' c( K* G6 c7 c0 Z
  4. # 启动应用,地址为 localhost:8080! N; J* `% m, L1 J' s+ _
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:0 K5 e2 T9 n1 A
  1. cnpm run build
复制代码

8 Q* v; ]* I* h: M7 |3 K( o4 s0 m, h

$ u3 m6 L( G0 H. l. J
/ @+ u$ ?- y. i4 T/ [. C' e9 Y  o' g7 y9 u+ u; M1 {: C* c& r/ w

# v) t: c/ n# e8 J3 ]
7 Q/ ]9 J0 H4 C0 C* O; E( c" s2 |. Y) Q
9 G2 W" @3 ~" y' {1 K8 N. p$ D) {4 s/ B
, o8 B# L  z; j1 b  v3 c

- q4 e/ P# n" ^  \

vue-router.js

63.76 KB, 下载次数: 2, 下载积分: 论坛积分 -2 分, 贡献值 -1 个, 好评度 -1 次

vue-2.0-simple-routing-example-master.zip

6.58 KB, 下载次数: 1, 下载积分: 论坛积分 -2 分, 贡献值 -1 个, 好评度 -1 次






欢迎光临 cncml手绘网 (http://bbs.cncml.com/) Powered by Discuz! X3.2