javascript
文章平均质量分 93
JavaScript
Andy____Li
烹饪工具箱
展开
-
Ant Design Pro 使用proxy无法设置cookies
Ant Design Pro 使用proxy无法设置cookies近期使用ant design Pro 实现了一个内部的后台。用于提供一个简单界面访问一些用户和设备的数据。但近期需要将系统交接给其他同事继续开发。想要在本地配置proxy连接后端服务器。1 关于AntD Pro配置代理1.1 关于为什么要配置代理AntD Pro 是前后端分离的前端框架,在部署时,一般会将前端代码打包和后端代码部署同一个域名下,所以不会有跨域的场景。比如使用nginx 部署· location / {原创 2020-11-23 13:38:05 · 2743 阅读 · 1 评论 -
Javascript 实现Sleep效果
在C++ 和linux 中经常使用sleep 来实现一个程序的延时,而在JavaScript中只有setTimeOut这种非阻塞方式,如果要实现一种类似阻塞的方式可以使用async/await 配合settimeout来实现。可以用于一些测试场景async function run(){ console.log('--------------'); await sleep(2); console.log('--------------'); await sleep(5); conso原创 2020-11-17 10:42:16 · 800 阅读 · 0 评论 -
JavaScript forEach与async/await
近来发现平时使用JavaScript 数组Array.forEach上存在误区。这里描述一下使用场景:简单来说就想对数组进行遍历,遍历中依次进行串行查询。具体到场景就是:对数据库数据进行读取得到一组用户id。然后又分别对该组用户id进行遍历 对每一个用户id进一步查询数据库得到结果。这里使用才发下在forEach语句里面使用await 想要阻塞住forEach循环让循环通过await实现串行效果何其愚蠢。1 问题背景这里用一段代码来描述forEach语法的误用:const userMap = new原创 2020-05-27 19:23:17 · 2963 阅读 · 1 评论 -
JavaScript 格式化显示JSON
先说结论,使用JSON.stringify方法 第三个参数参数格式化显示,使用标签保留空格和换行符:JavaScript:const jsonString = JSON.stringify(testjson, null, '\t');Html:<pre> jsonString <pre># 1 过程近期需要手搓一个界面,通过restfulAPI拿到一个j...原创 2020-04-22 18:15:06 · 2457 阅读 · 1 评论 -
JavaScript 随机数产生
今天要执行一个定时任务,但又不希望所有定时任务均在同一个时刻触发。我大概想要下面这样的一个东西,希望定时任务在凌晨2点某一个分钟触发。 const min = Utils.getRandomInt(60); const time = `0 ${min} 02 * * *`;这里就需要一个获取随机数的方式:提供了三个函数 getRandomInt(max): 获取小于某个值的整...原创 2019-12-05 19:51:50 · 1066 阅读 · 0 评论 -
Nodejs 后端解HTTP basic auth认证
项目中一般用oauth2 认证,今天想写一个demo就在POSTMAN中填了简单认证方式。嗯… 发现在express 还没有解过 尴尬了…今天写这篇blog把这个知识点加入到菜谱。文章目录1 Basic auth认证1.1 通用的 HTTP 认证框架1.2 基本验证方案(Basic auth)2 nodejs服务端中解Basic auth认证2.1 basic-auth模块2.2 自行解析1...原创 2019-11-29 18:14:47 · 4578 阅读 · 0 评论 -
JavaScript 中断Promise链方法
文章目录1 Promise2 Promise链及如何终止2.1 现象2.2 原因2.3 解决方案3 参考链接:1 PromisePromise,简单说就是一个容器,里面保存着某个未来才会结束的事件,在ES6得到支持。且具有以下特点:对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。一...原创 2018-10-31 13:24:06 · 6009 阅读 · 0 评论 -
gulp打包混淆支持await/async语法
最近需要对node代码进行混淆编译,原来曾经解决过ES6打包混淆的问题,但最近在代码中使用了async/await语法,原来的gulpfile混淆又出问题了。下面是记录这次问题的过程,想要看解决方案可以直接跳第三节。文章目录1 环境2 问题3 解决方案1 环境待混淆代码 test.jslet test = function(){ return new Promise((resol...原创 2019-04-17 18:23:56 · 2859 阅读 · 1 评论 -
JavaScript 查找有序数列中缺少的最小值
最近有一个需求,需要在获取一个可用id 在0~max值范围内,且有数量限制。 该id可以被删除, 删除后新的id应补位。这里举一个例子。规则:比如现在一个id 都没有用则 获取到的id为0[0]如果继续获取则为1[0, 1]如果继续获取则为2[0,1,2]继续获取则为3[0,1,2,3]现在删除1[0,2,3]再次获取则为1,在获取则为4[0,1,2,3,4]现在删除1...原创 2019-05-21 19:42:10 · 515 阅读 · 0 评论 -
JavaScript 对象数组操作(属性值存在,排序,最大最小)
最近需要将一个对象数组存到数据库中, 然后又要进行各种操作,这里写一个sample来记录操作方式。嗯 室友叫John,这里就写一个找John吧。sample有以下功能:查找对象数组中某个对象属性值是否存在并返回完整对象查找对象数组中某个对象属性值是否存在并返回Index以对象数组中对象某个属性排序找出对象数组中某个属性的最大最小值let testArray = [ { ...原创 2019-05-21 19:49:46 · 648 阅读 · 0 评论 -
JavaScript 对象深浅复制
最近使用使用微信推送模板消息时,数据都是通过固定的模板消息函数封装并返回, 而遇到对象浅复制的问题,导致有并发情况下,微信接口推送的是最后一个传入数据。虽然意识到了这个问题,但发现自己还没有处理过这种深复制的情况,这里整理一下,以供以后使用。如果需要代码 直接点击2.7节中 lodash库提供的接口使用,网上测评该lib的实现性能更高,在npm上的用户也非常多,可以直接用轮子。文章目录1 深...原创 2019-07-31 18:20:27 · 258 阅读 · 0 评论 -
Nodejs Buffer拼接
本文记录下最近遇到的buffer拼接问题。如果需要知道如何拼接 直接点击第二节文章目录1 背景2 buffer拼接3 buffer 截取1 背景最近有一个需求需要将缩略图和视频文件合并到一起用HTTP POST 发送给服务器,服务器解析后拆成缩略图和视频文件存储到云存储中。于是就写了下面这段代码读了读取两个文件,并相加。就实现下面这段代码。const fs = require('fs'...原创 2019-09-25 20:23:44 · 8836 阅读 · 1 评论 -
JavaScript 判断对象为空的方法
文章目录1 背景2 方法2.1 Jquery 的isEmptyObject2.2 node2.3 判断对象属性个数1 背景经常在express 框架中处理body参数等等操作,而有时经常没有传入某个对象参数,而程序里又对该对象的属性进行了操作,这就会导致比较严重的后果。没有异常捕获就会导致宕机,比如下列code:let item = { high:23, width:32}...原创 2018-10-29 20:02:47 · 572 阅读 · 0 评论 -
Javascript 函数变长参数(…rest)
在C/C++中 有argc argv可以传入变长参数给程序。在node有时就会遇到这个需求。在ES5中可以使用arguments对象了。在ES6标准中引入了 rest 参数(形式为…变量名),用于获取函数的多余参数。rest 参数搭配的变量是一个数组,该变量将多余的参数放入数组中。非常适合处理变长参数的情况。PS:rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错。fu...原创 2018-10-19 18:06:27 · 13059 阅读 · 0 评论 -
Javascript set结构 (去重)
javascript 的set结构用来去重非常方便,这里记录一下。文章目录1 背景2 set数据结构2.1 set创建2.2 set 加入或删除key操作2.3 set转数组1 背景最近遇到问题,要记录某个人曾经用过的手机和操作系统记录到一个json{ "os":["android","ios"], "android":["mi8&am原创 2018-10-09 20:18:01 · 9129 阅读 · 0 评论 -
javascript ES6 let
本文为阮一峰ES6教程学习笔记 . 原文链接:http://es6.ruanyifeng.com/#docs/letES6 新增了let命令,用来声明变量。 它有以下几个特点:块作用域let不存在变量提升 暂时性死区1 块作用域它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 sample:var a = [];for (var i = 0;...原创 2018-03-23 18:29:22 · 202 阅读 · 0 评论 -
JavaScript ES6 const使用
本文为ECMAScript 6(阮一峰)入门 读书笔记:http://es6.ruanyifeng.com/#docs/let#const-%E5%91%BD%E4%BB%A41 const 声明1.1 const声明即为常量不可变const声明一个只读的常量。一旦声明,常量的值就不能改变。const PI = 3.1415;PI // 3.1415PI = 3;// TypeError: As原创 2018-03-29 19:25:15 · 677 阅读 · 0 评论 -
Express中 res.json 和res.end 及res.send()
今天对某个restful API 进行测试过程发现并发性能很差,吞吐率差了非常多。结果发现是res.end 误用的情况。参考:express 官方文档 http://www.expressjs.com.cn/4x/api.html#res现在总结下 express响应中用到常用三种API:res.send() res.json()res.end()环境测试环境:express 4.14.1原创 2018-03-30 10:07:40 · 36338 阅读 · 3 评论 -
Javascript 解构赋值
本文是 ECMAScript 6 入门 学习笔记:http://es6.ruanyifeng.com/#docs/destructuringES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。1 可以解构赋值的数据类型等号的右边不是数组必须为可遍历的结构(具备 Iterator 接口)1.1 数组解构赋值为数组中提取值,按照对应位置,对变量赋值原创 2018-04-16 19:10:23 · 3498 阅读 · 0 评论 -
mocha测试restful API
最近在写restful API ,实在受不了用postman测试API的效果了,一怒之下翻出来原来用过的mocha。环境:服务端采用express框架编写在express package.json中加入 &quot;devDependencies&quot;: { &quot;mocha&quot;: &quot;3.0.2&quot;, &a原创 2018-03-28 18:23:45 · 3157 阅读 · 0 评论 -
JavaScript中forEach for in for of
今天使用for in 发现问题:For(let index in array)index 并不是Number 而是String 所以check 要check ‘2’ 所以准备抽空研究下 forEach for of for in区别先说结论forEach用于数组for in用于对象 for of语句用于可迭代对象(包括Array,Map,Set,String,Typ...原创 2018-05-31 20:28:47 · 1008 阅读 · 0 评论 -
JavaScript中避免回调地狱方法
在使用JavaScript时,为了实现某些逻辑经常会写出层层嵌套回调函数,如果嵌套过多,会极大影响代码可读性和逻辑,这种情况也被成为回调地狱(callback hell)。我们不能一直容忍这种code存在在代码中。1 什么是回调地狱(callback hell)2 如何避免2.1 解决回调嵌套问题(ES6 promise)2.2 ES6 co/yield方案2.2.1 什么是G...原创 2018-06-20 10:03:28 · 8027 阅读 · 1 评论 -
JavaScript Number范围及超出范围运算方法
今天在LeetCode上练刀法的时候,遇到了一个问题,两数相加,发现有个边界条件就是输入超过number的范围(大数操作),这就涉及到了知识的盲区,看来刀法还是不锋利,这里总结一下number的问题。原题目如下: 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 示例: 输入:(2 -> 4 -> 3) + ...原创 2018-08-13 13:30:20 · 16292 阅读 · 0 评论 -
JavaScript 正则断言
最近想把子串处理成markdown的表格形式。本来准备用正则表达式实现这个功能,发现还是有问题,不过借机学习了一下正则表达式中的断言部分,有了一点了解。1 背景2 JavaScript 正则表达式断言2.1 先行断言2.2 先行否定断言2.3 后行断言2.4 后行否定断言3 遗留的问题4 参考链接1 背景Markdown 语法里面的表格是这样的:| t...原创 2018-09-11 19:32:12 · 1338 阅读 · 0 评论 -
Nodejs 处理汉字得到码点
Nodejs是可以存储汉字昵称,因为nodejs 默认是UTF16编码方式,是unicode编码的一种实现。UTF-16 使用二或四个字节为每个字符编码(定长 一般情况下为2字节),因为对于绝大部分字符只使用2个字节就可以表示了。对于汉字而言,大部分汉字采用两个字节编码,少量不常用汉字采用四个字节编码。文章目录1 背景2 JavaScript处理汉字的方式2.1 码点大于2个字节的问题2.2 ...原创 2018-09-19 20:28:08 · 1859 阅读 · 0 评论 -
javascript数组拷贝及浅拷贝
今天在读阮一峰 ECMAScript6 中 数组扩展运算符中遇到一个问题——数组复制(拷贝),还涉及到浅拷贝,思考熟悉了下,特此记录。文章目录1 数组复制1.1 ES5——concat()1.2 ES6——…运算符1.3 数组拷贝和直接用=等号区别2 浅拷贝1 数组复制1.1 ES5——concat()在ES5 中我们可以使用concat函数变相实现数组复制let a1 = [1, 2]...原创 2018-10-18 19:52:35 · 2546 阅读 · 0 评论 -
JavaScript date对象使用及转换
Date对象用来表示日期和时间。测试环境chrome1 date对象和时间戳1.1 date对象var date = new Date();date; // Wed Jan 10 2018 19:32:00 GMT+0800 (中国标准时间//获取当前时间(带时区) //当前时间是浏览器从本机操作系统获取的时间,所以不一定准确,因为用户可以把当前时间设定为任何值。原创 2018-01-11 11:41:04 · 2032 阅读 · 0 评论