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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12410|回复: 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
复制代码

, U; q# [( C6 |! V6 E4 A
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

( j$ a; j- a! H% K" c+ mNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码6 ~, i$ T: ]2 x* F  h
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>6 m) \7 [* m4 P% G* p( O
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    - {  V3 i" W, l# r
  3.   i) F. q2 f* L
  4. <div id="app">
    + I, @" ], W4 W6 U, {( A- E
  5.   <h1>Hello App!</h1>; |2 D1 V  v+ h/ f
  6.   <p>
    + j; y  f( T5 F0 M
  7.     <!-- 使用 router-link 组件来导航. -->! |, H- _- P! V6 T/ D
  8.     <!-- 通过传入 `to` 属性指定链接. -->9 t! d' z' T. W8 R2 c& v
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    / j8 t1 ~0 x1 j1 o9 L" r
  10.     <router-link to="/foo">Go to Foo</router-link>( E% `8 E' L* Z3 X/ u
  11.     <router-link to="/bar">Go to Bar</router-link>
    ! \0 d" G8 F4 D# r& T# J  U0 t
  12.   </p>
    1 O1 `$ f* W$ C5 B  Q2 z1 L" M' e
  13.   <!-- 路由出口 -->
    ; O/ t' C3 X$ S  y( T4 f3 ^) Y
  14.   <!-- 路由匹配到的组件将渲染在这里 -->
    % V* Y- k, ^. e* m) `
  15.   <router-view></router-view>: p" G0 }) i0 l
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)0 Y+ U/ ]$ L. i6 U  p& n
  2. * x( K$ Z: ~( X5 A. q% d( I) D
  3. // 1. 定义(路由)组件。
    2 \$ R8 {. u7 g) t4 L
  4. // 可以从其他文件 import 进来7 Q$ G$ z4 G8 t, U# n
  5. const Foo = { template: '<div>foo</div>' }
    & S+ M4 |8 o& |& B
  6. const Bar = { template: '<div>bar</div>' }
    7 ~4 q8 T: ~2 W0 T
  7. 9 V! w, b; Q. R) z
  8. // 2. 定义路由
      N- m& L# {  _# E# l9 ]9 g& _9 a
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    / h- i: E8 k/ C3 w+ W! x
  10. // 通过 Vue.extend() 创建的组件构造器,
    7 W0 ]' n5 L4 q
  11. // 或者,只是一个组件配置对象。
    : k/ B! d0 b+ j. Z, i) l0 b/ k
  12. // 我们晚点再讨论嵌套路由。7 F" T( j6 z. h9 {' H
  13. const routes = [8 ]' I( _0 a9 F' R1 _. Q' U( p
  14.   { path: '/foo', component: Foo },
    , a  |9 R2 n2 s* Y. c
  15.   { path: '/bar', component: Bar }, |( ?- }( ~3 J8 ?
  16. ]
    2 N/ {. L( ~+ \# I

  17. 4 ^/ [  Z  @; N1 s
  18. // 3. 创建 router 实例,然后传 `routes` 配置
    2 ]6 B* ]& g9 O. B7 @
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。' A% ^( R7 w+ B
  20. const router = new VueRouter({
      M8 q$ R, x  f, G
  21.   routes // (缩写)相当于 routes: routes5 D/ W5 c, G& N6 A# E
  22. })/ z# X$ f: o9 f9 Y$ h. `. h6 P, n
  23. - a" a0 U' {* m
  24. // 4. 创建和挂载根实例。% S5 m4 S  M' v
  25. // 记得要通过 router 配置参数注入路由,% a) n5 `3 v+ H, b
  26. // 从而让整个应用都有路由功能
    6 z, h/ n* _2 i( l" s
  27. const app = new Vue({% g' q# X* h; t
  28.   router, H& Y# A8 u  J+ ?, {/ B
  29. }).$mount('#app')" w( u+ V( [% t* S! v! c8 q5 k
  30. # g( L3 s" n# q& V
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

. \* u' `" T2 o9 i& g$ U  W& ^% \& P5 k
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    6 v% e7 w1 v& c+ [
  2. cnpm install
    . a3 P$ ~: C* i
  3. # Q; o+ ]/ X3 C8 m  E
  4. # 启动应用,地址为 localhost:8080  W+ W9 ?) C& l( `
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
7 f5 _; `- h% G! c7 m
  1. cnpm run build
复制代码
, D/ K: _$ k% n, k$ A
9 B+ a3 T- B5 U
* C- h0 U" l9 ^( a. R# m' ~

3 m/ \' h8 r4 @+ {1 M' s
0 H( s. |( ~2 h$ C/ Q) e7 {( y8 Q5 U7 o: X2 H# p, d
6 [6 q; @# N* r; ]/ a3 q/ _# Y
* ^5 k+ c4 R- q

( p- J2 Y% \( g9 f& a- a9 [$ \8 ?. V2 @; E; A

/ w/ j' U& ~- ^$ ?1 n8 X6 D. z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:15 , Processed in 0.116138 second(s), 22 queries .

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