Vue.js系列之vue-router(上)(3)


Posted in Javascript onJanuary 03, 2017

说明:

我们项目现在用的是:vue2.0 + vue-cli + webpack + vue-router2.0 + vue-resource1.0.3

如果大家在实践的过程中与本文所说的内容有较大区别的话看看是不是版本问题。

本文是一系列文章,在我对Vue有了更深刻的理解认识之后会对文章及时进行修改或更正。欢迎大家批评指出错误。以下是已完成的文章列表。

概述

Vue非常适用于实践单页面应用程序也就是平时大家说的比较多的SPA(single page application),这点应该了解过Vue的应该都知道吧。一般的单页面应用是基于路由或页面之间的链接来形成的,Vue是基于路由和组件的,所以我们今天就来了解下vue-router。vue-router是Vue.js官方的路由插件,它和vue.js深度集成,用于设定访问路径,并将路径和组件映射起来,我们给每个组件一个路由地址,跳转路由相当于组件切换。vue-router的内容还是比较多的,这里我只分享我自己项目中用到的地方,其他地方大家可以看文档啦。

vue-router官网:http://router.vuejs.org/zh-cn/(中)

英文官网你知道啦,直接去掉后面的"zh-cn/"就好了。

开始使用vue-router

这里我假设大家之前都用模块工程的方式实践了一个vue Demo,在此基础上我们添加vue-router。

1.安装

npm install vue-router

2.在项目main.js中安装路由插件

import Vue from 'vue' 
import VueRouter from 'vue-router' 
Vue.use(VueRouter)

3.在组件中使用路由

先看下路由跳转的效果吧,大家注意看地址栏变化哈。

Vue.js系列之vue-router(上)(3)

下面这个tabBar就是一个组件(偷偷告诉你,在微信小程序中,这个功能直接配置app.json文件就好了)

每个tab点击时路由地址会相应变化,其实是渲染相应的组件,具体我们来看代码。

footer.vue组件

<template> 
  <div class="footer"> 
    <div class="readType" v-if="readType.count">{{readType.count}}</div> 
    <ul class="main-nav"> 
      <li> 
        <router-link to="/home"> 
          <i class="icon-nav icon-nav1"></i><span>首页</span> 
        </router-link> 
      </li> 
      <li> 
        <router-link to="/quan" v-bind:class="{rrouter:activ}"> 
          <i class="icon-nav icon-nav2"></i><span>学友圈</span> 
        </router-link> 
      </li> 
      <li> 
        <router-link to="/friend"> 
          <i class="icon-nav icon-nav3"></i><span>学友</span> 
        </router-link> 
      </li> 
      <li> 
        <router-link to="/find"> 
          <i class="icon-nav icon-nav4"></i><span>发现</span> 
        </router-link> 
      </li> 
      <li> 
        <router-link to="/mine"> 
          <i class="icon-nav icon-nav5"></i><span>我的</span> 
        </router-link> 
      </li> 
    </ul> 
  </div> 
</template>

这里有几点需要知道:

1.使用 router-link 组件来导航.

2.通过传入 `to` 属性指定链接.

3.<router-link> 默认会被渲染成一个 `<a>` 标签

路由出口

我们前面说了,路由跳转就是相应组件在渲染,那么渲染的内容是怎么显示也页面中的呢,那就是路由出口'<router-view></router-view>'做的事了,路由匹配到的组件将渲染在这里。

路由出口我们可以设置在当前组件中也可以设置在其他组件中,项目中我们就将所有组件都渲染在最大的容器App.vue组件中(我们项目中App组件只作为渲染容器)。

<template> 
 <div id="app"> 
  <router-view></router-view> 
 </div> 
</template>

JavaScript

定义路由文件可以直接写在main.js文件中,也可以新建一个js文件,因为我们的组件比较多,所以单独把路由拿出来写了一个router.js文件。

// 0. 如果使用模块化机制编程,进入Vue和VueRouter,要调用 Vue.use(VueRouter) 
import Vue from 'vue' 
import VueRouter from 'vue-router' 
Vue.use(VueRouter) 
// 1. 定义(路由)组件。 
// 可以从其他文件 import 进来,我们一般都是建好了组件再来写路由的 
// 所以就会有好多这样的语句。 
import home form "./components/home" 
import login form "./components/login" 
// 2. 定义路由 
 routes: [ //这里跟1.x有挺大区别,有接触的自己看清楚哦 
  { 
   path: '/',  //浏览器网路请求走通之后默认就会去找域名下的根目录, 
   name: 'home', //所以我们就把这个组件作为默认首页 
   component: home 
  }, 
  { 
   path: '/login', 
   name: 'login', 
   component: login 
  } 
  ] 
// 3. 创建 router 实例,然后传 `routes` 配置 
// 你还可以传别的配置参数, 不过先这么简单着吧。 
const router = new VueRouter({   //你就当const是var 
 routes 
//(缩写)相当于 routes: routes 
}) 
// 4. 创建和挂载根实例。 
// 记得要通过 router 配置参数注入路由, 
// 从而让整个应用都有路由功能 
const app = new Vue({ 
 router 
}).$mount('#app') 
// 现在,应用已经启动了!

总结

上篇先分享到这里,主要了解了有以下几点:

1.vue-router的安装和使用

2.在组件模板中的书写格式

3.知道了路由出口

4.如何定义一个路由

5.创建路由实例和挂载实例

下篇我将给大家继续分享路由的其他用法(项目中用到的):

1.如何实现当前页激活,tab标签同时也激活,即active-class

2.路由跳转时添加过渡动效

3.路由传参及命名路由

4.实现资源懒加载

5.编程式导航

6.router-link的其他表现形式

7.Router构造详细配置

内容有点多,可能还要再分细一点,写详细点。但还是想把自己遇到过的问题,用到的知识点通过自己的理解分享出来。

以上所述是小编给大家介绍的Vue.js系列之vue-router(上)(3),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery弹出关闭遮罩层实例
Aug 06 Javascript
用Javascript获取页面元素的具体位置
Dec 09 Javascript
javascript实现显示和隐藏div方法汇总
Aug 14 Javascript
JavaScript文档碎片操作实例分析
Dec 12 Javascript
理解javascript定时器中的setTimeout与setInterval
Feb 23 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
May 30 Javascript
jquery实现ajax加载超时提示的方法
Jul 23 Javascript
第一次动手实现bootstrap table分页效果
Sep 22 Javascript
Canvas + JavaScript 制作图片粒子效果
Feb 08 Javascript
vue loadmore组件上拉加载更多功能示例代码
Jul 19 Javascript
VUE简单的定时器实时刷新的实现方法
Jan 20 Javascript
ElementUI Tag组件实现多标签生成的方法示例
Jul 08 Javascript
JavaScript实现自定义媒体播放器方法介绍
Jan 03 #Javascript
JS求解三元一次方程组值的方法
Jan 03 #Javascript
Vue.js系列之项目结构说明(2)
Jan 03 #Javascript
Vue.js系列之项目搭建(1)
Jan 03 #Javascript
jquery实现下拉框多选方法介绍
Jan 03 #Javascript
jQuery实现可拖拽3D万花筒旋转特效
Jan 03 #Javascript
详解JavaScript常量定义
Jan 03 #Javascript
You might like
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
javascript iframe编程相关代码
2009/12/28 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
javascript数组的使用
2013/03/28 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
JS常见算法详解
2017/02/28 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
TypeScript类型声明书写详解
2019/08/28 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
Django实现快速分页的方法实例
2017/10/22 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
销售高级职员求职信
2013/10/29 职场文书
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
教育学专业实习生的自我鉴定
2013/11/26 职场文书
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL