Appearance
- 对比工具 :Kaleidoscope
- html导出为word : html-docx-js
- html导出为pdf: jsPDF, iText
时间
秒数转为日时分秒
getTime(start: Date, future: Date) { const sec = (future.getTime() - start.getTime()) / 1000 return { day: Math.floor(sec / (24 * 3600)), hour: Math.floor((sec / 3600) % 24), minute: Math.floor((sec / 60) % 60), second: Math.floor(sec % 60) } }
掩码数字
let cardNumber = '1234567890'; let last3Digit = cardNumber.slice(-3);//'890' let maskNumber = last3Digit.padStart(cardNumber.length,'*')//'*******890'
交换两个变量
let a = 'a'; let b = 'b'; [b,a] = [a,b]
JSON.stringify 替换参数的威力
const obj = {name:'zjh',salary:3000};
const doubleSalary = (key,value)=>{return key === 'salary' ? value*2 : value)}
const result = JSON.stringify(obj,doubleSalary)//'{"name":"zjh","salary":6000}'
给某个DOM批量取消事件监听
const evtBtn = document.querySelector('.event'); const cancelBtn = document.querySelector('.cancel'); const evtHandler = (e) => console.log(e); const mdHandler = (e) => console.log(e); const muHandler = (e) => console.log(e); const ac = new AbortController(); const { signal } = ac; evtBtn.addEventListener('click', evtHandler, { signal }); evtBtn.addEventListener('mousedown', mdHandler, { signal }); evtBtn.addEventListener('mouseup', muHandler, { signal }); // 点击 cancelBtn 移除 evtBtn 按钮的 click 事件监听 cancelBtn.addEventListener('click', function () { ac.abort(); });
addEventListener
的第三个参数可以是一个options
对象,这个对象可以让我们传递一个signal
对象用来作为事件取消的信号对象。就像上面我们使用signal
对象来取消fetch
请求那样。轮播图切换规律
当我们的图片切换到四张轮播图的最后一张,下一张应该是第一张,但是这样直接切回第一张没有了过渡效果,我们想要的是四张轮播图片像是一个圆,一直无缝循环
所以我们就在四张轮播图的再后面放上第一张图片,当四张轮播图切换完后,下一张就切换到新增的这第一张图片,切换完毕,我们再趁机切换到四张图片的第一张,注意这次切换时无过渡效果的,这样图片播放又从第一张图片开始。
devtool
const openInEditor = require('launch-editor-middleware')
clone 快一点 。git clone --depth=1 --single-branch git**@github**.com:ElemeFE/element.git
resolveSourceMapLocations map 文件默认和执行文件处于同一目录,如有特殊情况需要设置
resolveSourceMapLocations
告知调试器去哪些目录找 map 文件