js
Liuer_Qin
这个作者很懒,什么都没留下…
展开
-
前端导出word文件—包含canvas(echarts图表)
一、使用的插件html-docx-js二、整体思路因为canvas是运行在内存中的,所以不能简单的通过dom获取canvas图片,需要手动的先将canvas转为image。三、实现因为canvas是运行在内存中的,所以也不能通过cloneNode方法克隆下来(克隆下来是空的),所以先克隆再在克隆的dom上进行操作是不可取的。所以需要在原DOM上生成img,设置display: none从而使图片不影响页面展示,并插入到对应canvas元素之前(为了保证顺序不变)。此时,我们就可以使用clone原创 2022-05-16 15:41:46 · 2775 阅读 · 0 评论 -
柯里化(curry)
概念柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。比如函数 _f(a,b,c,d) 经过柯里化后可以使用以下方式调用:f( a )( b )( c )( d )f( a, b )( c )( d )f( a, b )( c, d )f( a, b, c )( d )…实现function curry (f) { const g = (...args) => { if (arg原创 2021-07-01 17:34:50 · 110 阅读 · 0 评论 -
vue-router源码解析(思维导图)
如有错误,烦请各位指出哦原创 2021-06-29 15:46:14 · 131 阅读 · 0 评论 -
切片上传(秒传、断点续传)
切片上传1. 文件切片将文件分割成指定大小的chunk,存储到数组中createFileChunk(file, size=CHUNK_SIZE) { const chunks = [] let cur = 0 while (cur < this.file.size) { chunks.push({index: cur, file: this.file.slice(cur, cur+size)})原创 2021-06-04 00:26:20 · 2137 阅读 · 0 评论 -
js实现深拷贝
function deepCopy (target) { if (target) { if (Array.isArray(target)) { return copyArray(target) } else if (target.toString() === '[object Object]') { return copyObj(target) } } return target}function copyArray (arr) { ret原创 2021-04-21 16:20:35 · 127 阅读 · 0 评论 -
数组扁平化(展开多层嵌套数组)
方法一arr.join(',').split(',');方法二const flatten = (arr) => { return arr.reduce( (prev, cur) => prev.concat(cur instanceof Array ? flatten(cur) : cur), [] )}原创 2021-03-04 17:33:14 · 585 阅读 · 2 评论 -
get/post请求导出文件及各自的优缺点
一、get请求导出文件1、window.open(url)会自动打开一个标签页,下载完后会自动关闭这个标签页。Safair 是否会自动关闭标签页有待验证。2、window.location(url) 或 location.href = url在当前标签页下载3、< a href=“url” download=“filename”>点击链接下载< /a>在当前标签页下载...原创 2020-10-09 16:52:32 · 3893 阅读 · 0 评论 -
防抖和节流—应用场景及实现
防抖和节流防抖概念假定时间间隔为200ms,如果触发事件后的200ms内再次触发事件,则重新等待200ms,否则将成功执行指定函数。应用场景数据查询、监控用户输入代码实现function search() { var t = null; // 使用闭包 return function () { if (t) { clearTimeout(t); t = null } t = setTimeout(() => { console.log('执行原创 2020-09-05 15:25:23 · 284 阅读 · 0 评论