vue 懒人_Vue.js 中的实用工具方法【推荐】

收集日常开发中常用到的一些工具方法, 包含 vue 的公用过滤器、公用指令等 (PS: 懒人养成记)

公用自定义过滤器

import Vue from 'vue'

import moment from 'moment'

/**

* @filter dateFormat 时间格式化

* @param {String, Date} value 可被 new Date 解析的字符串

* @param {String} formatStr moment 的 format 字符串

* 使用方法 {{ 2019-1-1 | dateFormat() }}

*/

Vue.filter('dateFormat', (value, formatStr) => {

return moment(value).format(formatStr || 'YYYY年MM月DD日 hh:mm:ss')

})

/**

* @filter digitUppercase 人民币金额转成汉字大写

* @param {Number} value 金额数字

* 使用方法 {{ 1111 | digitUppercase }}

*/

Vue.filter('digitUppercase', (value) => {

if (Number(value)) {

let fraction = ['角', '分']

let digit = [

'零', '壹', '贰', '叁', '肆',

'伍', '陆', '柒', '捌', '玖'

]

let unit = [

['元', '万', '亿'],

['', '拾', '佰', '仟']

]

let head = value < 0 ? '欠' : ''

value = Math.abs(value)

let s = ''

for (let i = 0; i < fraction.length; i++) {

s += (digit[Math.floor(value * 10 * Math.pow(10, i)) % 10] + fraction[i]).replace(/零./, '')

}

s = s || '整'

value = Math.floor(value)

for (let i = 0; i < unit[0].length && value > 0; i++) {

let p = ''

for (let j = 0; j < unit[1].length && value > 0; j++) {

p = digit[value % 10] + unit[1][j] + p

value = Math.floor(value / 10)

}

s = p.replace(/(零.)*零$/, '').replace(/^$/, '零') + unit[0][i] + s

}

return head + s.replace(/(零.)*零元/, '元')

.replace(/(零.)+/g, '零')

.replace(/^整$/, '零元整')

} else {

return '零元整'

}

})

公用自定义指令

import Vue from 'vue'

/**

* @directive preventReClick 防止按钮在短时间内多次点击造成的多次请求(一般用于提交按钮)

* @param {Element} el 绑定的元素

* @param {Number} binding 绑定的时间

* 使用方式

*/

Vue.directive('preventReplaceClick', {

inserted (el, binding) {

el.addEventListener('click', () => {

if (!el.disabled) {

el.classList.add('is-disabled')

const i = document.createElement('i')

i.classList.add('el-icon-loading')

el.prepend(i)

el.classList.add('is-loading')

el.disabled = true

setTimeout(() => {

el.disabled = false

el.classList.remove('is-disabled')

el.classList.remove('is-loading')

el.removeChild(i)

}, binding.value || 1000)

}

})

}

})

实用方法

节流和防抖

/**

* 应用场景

* debounce(抖动)

* search搜索联想,用户在不断输入值时,用防抖来节约请求资源。

* window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次

*

* throttle(节流)

* 鼠标不断点击触发,mousedown(单位时间内只触发一次)

* 监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断

*/

// 防抖

export function debounce (fn, delay = 200) {

let timer

return function () {

let th = this

let args = arguments

if (timer) {

clearTimeout(timer)

}

timer = setTimeout(function () {

timer = null

fn.apply(th, args)

}, delay)

}

}

// 节流

export function throttle (fn, interval = 200) {

let last

let timer

return function () {

let th = this

let args = arguments

let now = +new Date()

if (last && now - last < interval) {

clearTimeout(timer)

timer = setTimeout(function () {

last = now

fn.apply(th, args)

}, interval)

} else {

last = now

fn.apply(th, args)

}

}

}

时间格式化处理

```javascript

// 格式化 startDate 和 endDate

import moment from ‘moment'

import _ from ‘lodash'

/**

@method timerByAdd 计算相对当前时间后N个单位时间的日期(加法)

@param num {Number} 相对于几个时间点

@param timer {String} 时间单位 ‘days' ‘months' ‘years‘ 更多时间单位参考moment官方文档

@param formatStr {String} moment 的 format 字符串

@return {Object} {startDate,endDate}

*/

export function timerByAdd ({

num,

timer = ‘days'

} = {}, formatStr = ‘YYYY-MM-DD') {

let startDate

let endDate = moment().format(formatStr)

num ? startDate = moment().add(num, timer).format(formatStr) : startDate = endDate

let result = {

startDate,

endDate

}

return result

}

/**

@method timerBySubtract 计算相对当前时间前N个单位时间的日期(减法)

@param num {Number} 相对于几个时间点

@param timer {String} 时间单位 ‘days' ‘months' ‘years‘ 更多时间单位参考moment官方文档

@param formatStr {String} moment 的 format 字符串

@return {Object} {startDate,endDate}

*/

export function timerBySubtract ({

num,

timer = ‘days'

} = {}, formatStr = ‘YYYY-MM-DD') {

let startDate

let endDate = moment().format(formatStr)

num ? startDate = moment().subtract(num, timer).format(formatStr) : startDate = endDate

let result = {

startDate,

endDate

}

return result

}

/**

@method timerFormat 将对象时间转成数组形式

@param {Object} timer {startDate, endDate}

*/

export function timerFormat (timer) {

if (

.isObject(timer)) {

return

.values(timer)

}

}

总结

以上所述是小编给大家介绍的Vue.js 中的实用工具方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户权限管理——DB设计篇

来源&#xff1a;http://www.noahweb.net/mail/2/Project.htm#biao B/S系统中的权限比C/S中的更显的重要&#xff0c;C/S系统因为具有特殊的客户端&#xff0c;所以访问用户的权限检测可以通过客户端实现或通过客户端服务器检测实现&#xff0c;而B/S中&#xff0c;浏览器是每一…

oracle数据库常用的语法与复合函数

oracle查用到一些复合函数以及一些常用的方法用来快速查询数据&#xff0c;以下是我收集的一下常用方法&#xff0c;推荐给大家&#xff1a; 1、 当分组之后&#xff0c;针对某一属性值进行合并并以逗号进行分割&#xff1a; &#xff08;1&#xff09;所有版本都可使用&…

spring 事务之@transactional的使用与回滚

一、事务简单介绍 事务指逻辑上的一组操作&#xff0c;组成这组操作的各个单元&#xff0c;要不全部成功&#xff0c;要不全部不成功。 1.1 事务基本要素 原子性(Atomicity): 事务开始后所有操作&#xff0c;要么全部做完&#xff0c;要么全部不做&#xff0c;不可能停滞在…

python可视化图形界面_Python PyQt5 Designer 可视化图形界面模块

PYQT5 Designer简介强大的可视化GUI设计工具, 帮助我们快速开发PyQt.它生成UI界面为.ui文件, 通过命令将.ui转为.py文件.准备工作安装PyQt5: pip install pyqt5安装Qt工具: pip install pyqt5-tools(坑提示&#xff1a;一开始安装的pyqt5版本高了&#xff0c;结果安装QT工具的时…

雷克世界:Gyrfalcon加入芯片角斗场,又一款改变AI界的产品问世

来源&#xff1a;雷克世界 概要&#xff1a;随着人工智能产业规模扩大&#xff0c;众多巨头和初创公司纷纷加入人工智能芯片领域。 随着人工智能产业规模扩大&#xff0c;众多巨头和初创公司纷纷加入人工智能芯片领域&#xff0c;今天来了解一家旨在开发低成本、低功耗、高性能…

Freemarker静态化页面的使用

Freemarker 是一种基于模板的&#xff0c;用来生成输出文本的通用工具&#xff0c;所以我们必须要定制符合自己业务的模板&#xff0c;然后生成自己的文本&#xff08;html页面&#xff0c;string字符串&#xff0c;xml文本等等&#xff09;。Freemarker是通过freemarker.templ…

SessionHelper

问题描述&#xff1a; strut2 的织入 Session 为原始 Map 类型&#xff0c;没有泛型化&#xff0c;在添加属性时就会有一个恼人的警告。 功能&#xff1a; 1、安全的消除警告 2、插入时检查类型&#xff0c;如果不符就提前报错&#xff08;免得取值时才报转换异常的错误&…

报告怎么看_体检报告怎么看? 超实用的阅读指南来了!

体检报告怎么看&#xff1f;超实用的阅读指南来了&#xff01;要点概括除了禁食禁水可以吞口水吗&#xff1f;这样的问题&#xff0c;还有胆固醇、甘油三酯、胆红素…这些指标都是什么意思&#xff1f;出现升高或降低提示了怎样的身体变化&#xff1f;九图带你读懂&#xff01;…

从基础设施的演变,看人工智能到底需要什么样的底层平台

来源&#xff1a;亿欧 概要&#xff1a;大数据、大容量存储、弹性计算和各类算法的发展&#xff0c;尤其是在深度学习领域的发展&#xff0c;带来了各类脑洞大开的创新应用。 机器学习和人工智能的时代已经到来。大数据、大容量存储、弹性计算和各类算法的发展&#xff0c;尤其…

前后台加解密的使用--SHA256算法 RSA算法 AES算法

SHA256算法 sha256与md5一样是散列算法&#xff0c;不是加密算法&#xff0c;不存在解密的问题&#xff0c;因此是不可逆的&#xff0c;可以通过keypassword&#xff0c;对密码进行加密&#xff0c;在后台进行比对&#xff0c;安全性比md5高一点&#xff0c;加密后生成的密文为…

性能测量工具类——TimeMeasureUtil TimeMeasureProxy

TimeMeasureUtil&#xff1a;做单次时间测量。 1、为了能确保 startTime 和 endTime 都正确设置&#xff0c;因而采用实例对象来实现。每次测量是都能判断对象是否处在正确状态。 2、该类为工具类&#xff0c;即使测试时产生许多对象实例也对软件无任何影响。 public class T…

如何看屈曲因子_Abaqus 非线性屈曲分析方法

通常情况下&#xff0c;我们只用关注产品结构本身的强度和刚度满足一定的要求或标准即可。但实际工程中&#xff0c;对于像细长类的结构、薄壁结构&#xff0c;我们还得考虑它的稳定性问题&#xff0c;这也就是我们通常所说的失稳问题或者塌陷问题。在有限元分析中&#xff0c;…

人类首张脑电波连接全图问世

来源&#xff1a;科技日报 概要&#xff1a;美国宾夕法尼亚大学的神经学家根据300名接受神经外科手术患者大脑中30000个电极的数据&#xff0c;绘制出第一张脑电波连接全图。 美国国防部高级研究计划局&#xff08;DARPA&#xff09;资助的、与“恢复活跃记忆”相关的大脑研究项…

EasyMock 简介

来源&#xff1a;https://www.ibm.com/developerworks/cn/opensource/os-cn-easymock/ 使用注意&#xff1a; a、静态方法&#xff08; static 修饰&#xff09;无法模拟。 1、使用 EasyMock 进行单元测试 通过 EasyMock&#xff0c;我们可以为指定的接口动态的创建 Mock 对…

login控件authenticate_asp.net Login控件基本属性及事件说明

当前位置:IT大杂烩>JavaScript> asp.net Login控件基本属性及事件说明asp.net Login控件基本属性及事件说明www.someabcd.com 网友分享于&#xff1a;Jun 8, 2018 9:43:39 AM原文:asp.net Login控件基本属性及事件说明 Login系列控件是微软为了简化我们的开发过程&#…

全球半导体产业迁移 中国的机遇与挑战

来源&#xff1a;36氪 概要&#xff1a;商务部24日发布公告说&#xff0c;以附加“限制性条件”的形式批准了日月光半导体收购矽品精密股权案。 商务部24日发布公告说&#xff0c;以附加“限制性条件”的形式批准了日月光半导体收购矽品精密股权案。这个附加的“限制性条件”&…

dts同步常见问题_阿里云DTS数据同步常见问题(一)

阿里云的数据同步工具DTS确实是一件非常不错的工具&#xff0c;可以实现不同数据源之间的数据迁移、数据同步&#xff0c;只需要配置好两端的数据源就可以自动实现&#xff0c;不在需要人为的操作&#xff0c;非常的方便。但是如果不熟悉DTS的话呢&#xff0c;会遇到各种各样的…

暂时

/*** 使HTML的标签失去作用* * param input* 被操作的字符串* return String*/public static final String escapeHTMLTag(String input) {if (input null) {input "";return input;}input input.trim().replaceAll("&", "&&qu…

mysql的程序怎么升级成mysqli_如何将mysql更改为mysqli?-问答-阿里云开发者社区-阿里云...

首先要做的可能是将每个mysql_函数调用都替换为等效函数mysqli_&#xff0c;至少在您愿意使用过程式API的情况下-考虑到您已经有一些基于MySQL API的代码&#xff0c;这将是更简单的方法是一种程序性的。为了解决这个问题&#xff0c;“ MySQLi扩展功能摘要”绝对是有用的。例如…