vue实现的封装全局filter并统一管理操作示例


Posted in Javascript onFebruary 02, 2020

本文实例讲述了vue实现的封装全局filter并统一管理操作。分享给大家供大家参考,具体如下:

在前后端分离的项目中,经常会有后台返回的数据需要进过处理才能显示到页面上的场景。

使用最多的场景就是日期和时间的处理,后台一般返回的都是时间戳,那么我们就要对时间戳进行处理。

下面就拿封装全局的处理日期和时间的 filter 来展示如何 vue 如何封装全局 filter 并统一处理。

src 目录下新建 filters 目录用来专门存放全局过滤器,如果项目的过滤器过多,那么就要按类型分类。

我司的项目需要前台处理的数据不是太多,那么就在 filters 目录下新建一个 index.js 来存放所有的过滤器就足够了。

index.js 代码如下:

/*
  日期处理
    time:源时间戳
    type:要处理的格式 默认 xxxx年xx月xx日
      /: xxxx/xx/xx
      .: xxxx.xx.xx
      -: xxxx-xx-xx
 */
export const normalDate = (time,type) => {
  if (time) {
    var date = new Date();
    date.setTime(time);
    var year = date.getFullYear();
    var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) * 1 : date.getMonth() + 1;
    var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
    if(type == '-'){
      return year + '-' + month + '-' + day;
    }else if(type == '/'){
      return year + '/' + month + '/' + day;
    }else if(type == '.'){
      return year + '.' + month + '.' + day;
    }else{
      return year + '年' + month + '月' + day + '日';
    }
  }
}
/*
  时间处理
    time:源时间戳
    type:要处理的格式 默认 xxxx年xx月xx日 xx:xx:xx
      /: xxxx/xx/xx xx:xx:xx
      .: xxxx.xx.xx xx:xx:xx
      -: xxxx-xx-xx xx:xx:xx
 */
export const normalTime = (time,type) => {
  if (time) {
    var date = new Date();
    date.setTime(time);
    var year = date.getFullYear();
    var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) * 1 : date.getMonth() + 1;
    var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
    var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
    var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
    var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
    if(type == '-'){
      return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
    }else if(type == '/'){
      return year + '/' + month + '/' + day + ' ' + hours + ':' + minutes + ':' + seconds;
    }else if(type == '.'){
      return year + '.' + month + '.' + day + ' ' + hours + ':' + minutes + ':' + seconds;
    }else{
      return year + '年' + month + '月' + day + '日' + ' ' + hours + ':' + minutes + ':' + seconds;
    }
  }
}

然后在 main.js 中引入注册即可使用:

import * as filters from './filters'
Object.keys(filters).forEach(key => Vue.filter(key, filters[key]));

在页面中使用:

<p>{{time | normalDate('/')}}</p> //这样时间戳就会转化为xxxx/xx/xx的格式

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
JavaScript QueryString解析类代码
Jan 17 Javascript
JavaScript 学习笔记一些小技巧
Mar 28 Javascript
javascript获取鼠标点击元素对象(示例代码)
Dec 20 Javascript
JS的document.all函数使用示例
Dec 30 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
Jul 02 Javascript
js中最容易被忽视的事件问题大总结
May 15 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
Jun 30 Javascript
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
使用gulp构建前端自动化的方法示例
Dec 25 Javascript
vue路由教程之静态路由
Sep 03 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
Dec 12 Javascript
Vue.js中使用Vuex实现组件数据共享案例
Jul 31 Javascript
node 版本切换的实现
Feb 02 #Javascript
vue路由缓存的几种实现方式小结
Feb 02 #Javascript
vue简单封装axios插件和接口的统一管理操作示例
Feb 02 #Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 #Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 #jQuery
基于node+vue实现简单的WebSocket聊天功能
Feb 01 #Javascript
基于vue和websocket的多人在线聊天室
Feb 01 #Javascript
You might like
开发大型PHP项目的方法
2006/10/09 PHP
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
vue实现滑动超出指定距离回顶部功能
2019/07/31 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
使用js原生实现年份轮播选择效果实例
2021/01/12 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
使用Python制作简单的小程序IP查看器功能
2019/04/16 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
wxPython实现整点报时
2019/11/18 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
python把一个字符串切开的实例方法
2020/09/27 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
python 检测图片是否有马赛克
2020/12/01 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
优秀生推荐信范文
2013/11/28 职场文书
会计专业毕业生自荐信范文
2013/12/20 职场文书
保护地球的标语
2014/06/17 职场文书
学校元旦晚会开场白
2015/05/29 职场文书
英语教学课后反思
2016/02/15 职场文书