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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15637|回复: 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
复制代码
; n1 C: _& s' Z/ y" C& ~# O: k
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0

7 ]% w2 S6 T, }- wNPM
推荐使用淘宝镜像:
  1. cnpm install vue-router
复制代码
简单实例
Vue.js + vue-router 可以很简单的实现单页应用。
以下实例中我们将 vue-router 加进来,然后配置组件和路由映射,再告诉 vue-router 在哪里渲染它们。代码如下所示:
HTML 代码
  H* l" ^7 v( \. V: O0 S
  1. <script src="https://unpkg.com/vue/dist/vue.js"></script>
      U. R( U+ T; N( L7 Y
  2. <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>4 ^; Z* g2 R6 Y# A

  3. : O( F9 i3 p2 A) N( E/ T
  4. <div id="app">
    , A) }2 r/ t8 _( x2 r0 C
  5.   <h1>Hello App!</h1>( @2 `" \; N8 b% m5 D
  6.   <p>
    " s) i. _  k1 f3 X( I' ?4 a
  7.     <!-- 使用 router-link 组件来导航. -->
    / z  F. v+ \2 H+ H$ ^
  8.     <!-- 通过传入 `to` 属性指定链接. -->
    5 c( [- K3 ^( j
  9.     <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->. @5 z; ~! \3 J1 z/ \4 B
  10.     <router-link to="/foo">Go to Foo</router-link>3 j1 Z0 C. J$ E! `  q4 Q& j
  11.     <router-link to="/bar">Go to Bar</router-link>* a8 k3 L; c  H* m4 C: |  d, e" s
  12.   </p>+ f* o1 D# |0 s
  13.   <!-- 路由出口 -->
    4 `) E$ X0 G" P4 o" u+ q
  14.   <!-- 路由匹配到的组件将渲染在这里 -->$ F$ K3 ]8 C  ^- {+ o, ^; Y
  15.   <router-view></router-view>
    $ j0 f  k% l* G* N% k3 w) q
  16. </div>
复制代码
JavaScript 代码
  1. // 0. 如果使用模块化机制编程,導入Vue和VueRouter,要调用 Vue.use(VueRouter)  d, @8 A) `  n2 R
  2. $ [3 m9 @9 h. B; J1 i- x
  3. // 1. 定义(路由)组件。4 \8 @6 ]) b, G. i# ~' L
  4. // 可以从其他文件 import 进来
    7 r* O! \! r% E' ~
  5. const Foo = { template: '<div>foo</div>' }
    & G8 a9 C4 j* X6 t% E& G0 w
  6. const Bar = { template: '<div>bar</div>' }, x  [0 I/ H8 \
  7. # `: ^( N8 \5 Y
  8. // 2. 定义路由) N- c0 M" p; L  Q* R
  9. // 每个路由应该映射一个组件。 其中"component" 可以是& e- Q4 F1 Q* y1 O
  10. // 通过 Vue.extend() 创建的组件构造器,
    & e1 n. N/ j9 j. W9 i4 o
  11. // 或者,只是一个组件配置对象。6 P5 W9 W. G+ _- H  @
  12. // 我们晚点再讨论嵌套路由。
    4 f+ B- d- ]/ l, @9 G7 ]
  13. const routes = [' l. }. t3 o; h
  14.   { path: '/foo', component: Foo },! r5 w! F1 ?; M8 K9 R. v
  15.   { path: '/bar', component: Bar }! m4 ^5 j% G7 B+ T
  16. ]
    ! |) R% b3 H: M/ S

  17. & h: v% G" ]% D% B2 e9 j/ _
  18. // 3. 创建 router 实例,然后传 `routes` 配置, p0 F$ R5 d1 q- V( j! x) g
  19. // 你还可以传别的配置参数, 不过先这么简单着吧。
    ( |9 x* m  v( p7 Y7 S; F
  20. const router = new VueRouter({
    / t+ \1 r% q  }0 H* S
  21.   routes // (缩写)相当于 routes: routes
    ) g' R$ ?* [# O0 X5 D7 A! W
  22. })3 c) _! O, ^& \- U( z  m5 ~" X

  23. 9 k, V) a0 F7 {  R; p* T( ]
  24. // 4. 创建和挂载根实例。( ~5 q% p  w8 `3 M/ a: C) o
  25. // 记得要通过 router 配置参数注入路由,$ V. ^! B) m# S4 C
  26. // 从而让整个应用都有路由功能/ F5 t5 _% p' ^# a; \# B+ N- K
  27. const app = new Vue({
    * Q" r* y$ ?; Z0 W
  28.   router# {" X2 w2 U& r& T2 D8 B6 U
  29. }).$mount('#app')
    7 J3 @5 U5 v0 T! m  {& @

  30. % {/ B: m  r3 t
  31. // 现在,应用已经启动了!
复制代码
NPM 路由实例
接下来我们演示了一个使用 npm 简单的路由实例,开始前,请先下载该实例源代码:
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
5 @( Z! b& a% `. w0 d4 B
下载完后,解压该目录,重命名目录为 vue-demo,vu 并进入该目录,执行以下命令:
  1. # 安装依赖,使用淘宝资源命令 cnpm
    4 x& }. i' S, `2 n" l
  2. cnpm install
    % \# k* I0 |( V  T% N- O
  3. 4 n2 x% }( o/ V0 Q1 g' \$ Y/ x
  4. # 启动应用,地址为 localhost:8080# _( J+ X7 _7 }8 B4 \
  5. cnpm run dev
复制代码
如果你需要发布到正式环境可以执行以下命令:
3 S; Z/ i' Y8 U! @3 ^6 \* y
  1. cnpm run build
复制代码

0 w3 J/ s: y+ P. I) H6 t) V' I! n! a$ p

# ?1 v2 [) k$ T3 b' E# J$ X  ?8 G
9 G% _3 D8 [' v  Q" \5 x; x+ [% G9 k" }3 `5 Z7 V

$ O9 [6 m# q0 n5 u* s5 N& `( K7 y2 Y0 U( c

: Z* N  K8 a+ U
( }9 u* c9 V, K- ]0 c
9 _1 L: R+ [3 |" h8 z# E; z
3 N! W$ u' E3 T9 j% w' F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:20 , Processed in 0.056777 second(s), 24 queries .

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