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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12411|回复: 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
复制代码
4 a/ I8 a# P' [! ~3 y4 u2 o
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

- |; U# |9 d: z7 z2 ], |: TNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
9 u% F( N& v- `) n
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
    6 c, J+ o  l$ D" z9 ~7 e
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
    6 n* W7 s( B" P" m1 ~9 u
  3. 4 `$ W, b1 @4 W) S
  4. <div id="app"># [3 z4 h1 I& G% s" [
  5.   <h1>Hello App!</h1>. V" o0 X2 Z9 a
  6.   <p>
    2 {4 H0 R6 s7 Y3 C* n4 R" S
  7.     <!-- 使用 router-link 组件来导航. -->
    # V$ l9 F3 g/ w# f
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    9 z/ d: {$ N) H) h0 i# W
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
    * }/ T, o4 u2 U
  10.     <router-link to="/foo">Go to Foo</router-link>
    ) o5 t4 R1 x9 v# n7 }& h; b- ^
  11.     <router-link to="/bar">Go to Bar</router-link>
    - |# x0 F2 {" u) Q1 h
  12.   </p>0 p6 J! M5 o2 U8 t! a+ {: E8 w7 D4 M! F* W
  13.   <!-- 路由出口 -->
    + n) ?1 j9 `; ^; S
  14.   <!-- 路由匹配到的组件将渲染在这里 -->+ r) w/ }. y4 W( O+ A
  15.   <router-view></router-view>
    # D9 j) w3 y) E
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)1 i+ N$ P& X+ Z) [4 |, C* r
  2. 9 x& i3 u3 c3 S+ B" X, @
  3. // 1. 定义(路由)组件。
    ; k. l0 m1 c- v) u4 f- R5 [5 F
  4. // 可以从其他文件 import 进来
    ! R- @, B, F2 E9 b7 c; ]! j% k
  5. const Foo = { template: '<div>foo</div>' }% i6 u  I1 S% p( g' _6 ~3 f
  6. const Bar = { template: '<div>bar</div>' }" s/ o- ?! a3 s

  7. ; G0 f( l- w/ l# c
  8. // 2. 定义路由
    ( a+ f; o% C# ?4 u1 u0 p
  9. // 每个路由应该映射一个组件。 其中"component" 可以是5 y& o* v* S0 n) P! i: D
  10. // 通过 Vue.extend() 创建的组件构造器,$ ?( |# a% a6 E: n
  11. // 或者,只是一个组件配置对象。
    ) H8 _8 H6 M" r2 v. S
  12. // 我们晚点再讨论嵌套路由。. ]+ d( w% K9 C/ k' o: T
  13. const routes = [
    : K  M- s1 M$ ?9 Q* t
  14.   { path: '/foo', component: Foo },. z/ e6 b' n) W$ f4 J; _
  15.   { path: '/bar', component: Bar }
    0 Q9 Q) A5 A0 ?4 }% K
  16. ]
    0 p2 h- q6 k8 W7 u' U# H) R0 h

  17. 1 I7 U9 U$ N% f0 d5 }0 g
  18. // 3. 创建 router 实例,然后传 `routes` 配置' b; p# I3 i; Q  T+ `& K
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。8 h7 O- X4 m- ~: o# A3 F1 D
  20. const router = new VueRouter({
    " h1 a/ a# l4 g6 A  d8 d0 O
  21.   routes // (缩写)相当于 routes: routes
    + E$ ^5 U* X- V/ j9 b
  22. })
    9 B" [7 H# l1 [7 I. c* ?
  23. $ t4 O  b7 s3 R3 V: H5 A1 c
  24. // 4. 创建和挂载根实例。
    ) k# Q! g% d) k& j* k
  25. // 记得要通过 router 配置参数注入路由,
    9 Y2 |9 n7 F) [! s9 x5 K/ H
  26. // 从而让整个应用都有路由功能
    ) O) x( y& x; j  G( p
  27. const app = new Vue({
    ) w' s! M* r2 `' t3 R
  28.   router# O3 [0 K( x- q2 ]
  29. }).$mount('#app')
    . B* |1 H7 L3 l. I5 N. D* C# Q6 W
  30. , I: E: d9 ~. r% [( o
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
1 z$ @: u& [/ W) n5 b. v) L
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm: v/ g- X2 M# d2 s% B$ C, z
  2. cnpm install
    4 _+ C' A9 @1 \
  3. / h/ y' I+ Z: Z" n$ E
  4. # 启动应用,地址为 localhost:8080$ C: ?, v" L% Z+ `
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
+ X, ]$ k- g" K
  1. cnpm run build
复制代码
( @1 X! a5 U$ c  L  c+ A
; c# p; a, z" T. d% r
( m' F: M" K7 j. P* v
3 g; {$ z' V" \$ e# @- w' b5 u

0 u; E* x, r2 |7 m$ o2 K) K
( `6 m1 q' M/ X( \9 q* [4 h) N  z! N8 s; G3 @6 \

: w7 k" e# h5 k
5 ?0 a8 D. B$ ]0 {8 m8 N/ T
) ~; y% y* T+ o8 _3 g2 }) a0 P! j0 U* i* ]5 v8 U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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