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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

- V; I; E( f" M( }) x5 H
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
* [- @) V* L4 h# @+ A, J
NPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
7 x/ X4 F$ W4 |& G- x
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    / A* ]4 d8 ]4 m. g7 n5 ^
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>) b% X  D. r8 [, W7 G9 y
  3. 9 U3 L7 ]& C$ T9 G9 u/ [" O
  4. <div id="app">
    : F1 K4 B: y5 j
  5.   <h1>Hello App!</h1>
    " \' Y1 z) j+ U- O, V$ F
  6.   <p>3 y1 j; s. Y& p- Q' g6 W
  7.     <!-- 使用 router-link 组件来导航. -->
    ; a3 y2 o' O& E& q- Y7 i: P  S
  8.     <!-- 通过传入 `to` 属性指定链接. -->! N7 j3 s8 E9 I+ m4 k* G. {. q
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    : m- F! m: y, p( S1 P" b
  10.     <router-link to="/foo">Go to Foo</router-link>6 k! }9 Q( F  t' R9 V; u0 r6 [
  11.     <router-link to="/bar">Go to Bar</router-link>
    # P9 H: o+ a/ g0 i1 l
  12.   </p>$ b+ \2 o/ m% b' x; x
  13.   <!-- 路由出口 -->
    1 k, X+ d( S+ J5 n* A
  14.   <!-- 路由匹配到的组件将渲染在这里 -->2 p! o5 D* z* G8 K% v6 c
  15.   <router-view></router-view>
    & g$ g1 ?9 @; R: F2 U
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter); ^, z% W8 e5 e) Y) p
  2. 9 m; K, R, u/ {0 j4 g  H( C
  3. // 1. 定义(路由)组件。
    ( r" R2 \& A4 j5 J+ M6 _
  4. // 可以从其他文件 import 进来
    . q1 _. ]2 F' I
  5. const Foo = { template: '<div>foo</div>' }- z% D8 {: Z( a' j8 s( X% W# w* |! e
  6. const Bar = { template: '<div>bar</div>' }, `3 k% S$ T: L% x: l6 a( G0 B) V

  7. 7 ~4 A  ]1 A3 u" w2 V
  8. // 2. 定义路由
    ! _3 Z2 l/ h2 R) Y3 G
  9. // 每个路由应该映射一个组件。 其中"component" 可以是
    ( m% C6 i; [& F6 _  B
  10. // 通过 Vue.extend() 创建的组件构造器,; \) \4 w+ @* P
  11. // 或者,只是一个组件配置对象。9 I+ O1 s! z0 ~5 E3 E! \6 z
  12. // 我们晚点再讨论嵌套路由。0 L! R2 H% V: p* y7 a9 `4 ?, w& J
  13. const routes = [
    - ?* I$ o+ o9 y" y! A$ ^
  14.   { path: '/foo', component: Foo },
    9 u' O6 X3 b7 u& G& t
  15.   { path: '/bar', component: Bar }
    ! n3 O7 U$ F. m# A& |4 Y
  16. ]) j1 n& W0 T2 U4 m" I
  17. % l( |7 C9 G- h+ L6 V
  18. // 3. 创建 router 实例,然后传 `routes` 配置8 ]: x% |6 a% Z1 i
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    - v* h$ y, X9 W: s5 d
  20. const router = new VueRouter({
    , c7 ~0 g) @0 S9 Q
  21.   routes // (缩写)相当于 routes: routes- A' r4 U2 x$ W$ b( Q
  22. })
    : }* q( A( U8 H7 S
  23. - a7 N+ ]: y& F" Q+ g/ `
  24. // 4. 创建和挂载根实例。/ f0 l" g& _1 t/ p" `( X
  25. // 记得要通过 router 配置参数注入路由,
    % c) d4 `" N& X; o: ^+ O
  26. // 从而让整个应用都有路由功能
    6 _/ o0 \- y( |! f7 `+ H
  27. const app = new Vue({
    7 g3 N1 k& f, e( x: p
  28.   router3 `3 a% ]5 Q* G
  29. }).$mount('#app')! p5 m5 n$ \1 K6 b  ]" ^

  30. & Y" V1 U$ m4 M5 a' [  p5 @
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
% C' s+ Y3 F& U7 ^
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm" r# w9 d( B2 x7 M) o
  2. cnpm install% t( N1 k$ z5 {

  3. : L8 j1 o1 E+ ~( y0 U# Q2 }$ W
  4. # 启动应用,地址为 localhost:8080+ S: B! G3 _5 h7 g' G/ d( k
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:# K% w1 c) I7 K" C. L! n- w8 k/ K) Z9 U
  1. cnpm run build
复制代码

7 o0 O; @0 j; k& ^% @& H- J; B

3 }7 h9 f; e; m+ o) J# V3 e& i
9 U! \8 P, U3 h5 N4 ~
& c& m3 b  q( m$ i; [: y' o8 \! k5 X0 G0 z& x: p

. ]% `5 u: ?: F" @) P6 n, c" J7 h& A5 r' ^& z

, w( u* |/ q6 K
! P" B$ ^: {. o7 M
$ V( x& Q; i# A" U0 C+ Q, V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 12:20 , Processed in 0.141193 second(s), 22 queries .

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