02 07 月 2020 JavaScript - 深度冻结 2020-07-02 描述深度冻结一个对象。提示使用 Object.keys()获取参数对象中的所有属性使用 Array.prototype.forEach()对获取的所有属性进行迭代对所有属性递归调用 Object.freeze(obj)对每一个属性使用 Object.isFrozen()进行检查根据需要调用 deepFreeze()方法最终使用 Object.freeze()冻结给定的对象代码 constdee
01 07 月 2020 JavaScript - 深度克隆 2020-07-01 描述深度克隆一个对象。提示使用递归检查传入的对象是否为 null,如果是的话,返回 null 使用 Object.assign()和空对象({})为原始对象创建一个副本使用 Object.keys()和 Array.prototype.forEach()对需要深度克隆的键值进行判断代码 constdeepClone=obj=>{if(obj===null)returnnull;letclone
30 06 月 2020 JavaScript - 对象的绑定 2020-06-30 描述将对象的方法绑定到对象上下文中,以覆盖现有存在的方法。提示使用 Array.prototype.forEach()返回需要绑定的方法使用 Function.prototype.apply()将给定的上下文(obj)应用到每一个指定的 fn 上代码 constbindAll=(obj,...fns)=>fns.forEach(fn=>((f=obj[fn]),(obj[fn]=funct
29 06 月 2020 JavaScript - 使用 Node.js 生成 UUID 2020-06-29 描述在 Node.js 中生成一个 UUID。提示使用 cryptoAPI 生成符合 RFC4122 版本四的 UUID 代码 constcrypto=require('crypto');constUUIDGeneratorNode=()=>([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,c=>(c^(crypto.randomBytes(1)[0]&(1
28 06 月 2020 JavaScript - 将波浪号路径转换为绝对路径 2020-06-28 描述将波浪号路径转换为绝对路径。提示使用带正则表达式的 String.prototype.replace()和 OS.homedir()来替换带有~开头的主目录代码 constuntildify=str=>str.replace(/^~($|\/|\\)/,`${require('os').homedir()}$1`);示例获取下载目录的绝对路径:untildify('~/Downlo
24 06 月 2020 JavaScript - 读取文件中的每一行 2020-06-24 描述从指定文件中返回包含每一行的数组。提示使用 fs 中的 readFileSync 方法,根据指定文件创建一个 Buffer 使用 toString(encoding)方法将 buffer 转换为字符串根据文件内容使用 split 将正文进行逐行分割(\n)后放入一个数组中代码 constfs=require('fs');constreadFileLines=filename=>fs.readFile
23 06 月 2020 Deno 将永远支持 TypeScript 2020-06-23 背景昨天看到 5reasonswhyDenowillstopusingTypeScript 这个标题时被吓了一跳。突然想到会不会是 1.0 发布中提到的 TypeScript 编译瓶颈,但他的解决方案并不是放弃 TypeScript 呀。很害怕 Deno 自己啪啪啪打脸,于是又特意跑到官网上看看"SupportsTypeScriptoutofthebox"这一特性还在不在。哦,放心了,于是慢慢的一探
22 06 月 2020 JavaScript - JSON 格式化后保存到文件 2020-06-22 描述将一个 JSON 对象写入文件中。提示使用 fs.writeFileSync(),模版变量和 JSON.stringify()将一个 json 对象写入一个.json 的文件中代码 constfs=require('fs');constJSONToFile=(obj,filename)=>fs.writeFileSync(`${filename}.json`,JSON.stringify(o
19 06 月 2020 JavaScript - 是否为可写流 2020-06-19 描述检查给定的参数是否为可写流。提示首先检查参数是否不等于 null 其次使用 typeof 检查参数是否为 object 类型,其 pipe 属性是否为 function 类型最后还需要使用 typeof 检查_write 和_writableState 属性是否分别为 function 和 object 代码 constisWritableStream=val=>val!==null&&typeofval==='
18 06 月 2020 JavaScript - 当前环境是否为 Travis CI 2020-06-18 描述检查当前环境是否为 TravisCI。提示检查当前环境是否有 TRAVIS 和 CI 这两个环境变量(默认环境变量)代码 constisTravisCI=()=>'TRAVIS'inprocess.env&&'CI'inprocess.env;示例检测当前环境是否为 TravisCI:isTravisCI();//代码没有运行在 TravisCI 中则返回 false 返回总目录每天 30 秒系列之 J
17 06 月 2020 JavaScript - 是否为流 2020-06-17 描述检查给定的参数是否为一个流。提示首先检查参数是否不等于 null 其次使用 typeof 检查参数是否为 object 类型,其 pipe 属性是否为 function 类型代码 constisStream=val=>val!==null&&typeofval==='object'&&typeofval.pipe==='function';示例检测 fs.createReadStream()是否为流
16 06 月 2020 JavaScript - 是否为可读流 2020-06-16 描述检查给定参数是否为可读流。提示首先检查参数是否不等于 null 其次使用 typeof 检查参数是否为 object 类型,其 pipe 属性是否为 function 类型最后还需要使用 typeof 检查_read 和_readableState 属性是否分别为 function 和 object 代码 constisReadableStream=val=>val!==null&&typeofval==='ob
15 06 月 2020 JavaScript - 是否为双工流 2020-06-15 描述检查给定的参数是否为双工流(可读和可写)。提示首先检查参数是否不等于 null 其次使用 typeof 检查参数是否为 object 类型,其 pipe 属性是否为 function 类型最后还需要使用 typeof 检查_read,_write 和_readableState,_writableState 属性是否分别为 function 和 object 代码 constisDuplexStream=val=
11 06 月 2020 Deno 1.0 发布,与 Node 相比的 10 大优缺点 2020-06-11&2020-06-12 背景动态语言的编写让开发者不必担心内存管理或系统构建之类的细节,可以快速简洁地将复杂的系统链接在一起。JavaScript 做为使用最广泛的动态语言,在近几年又通过了 ECMA 标准组织进行了持续严谨的改进。我们有理由相信无论在浏览器环境中还是作为独立进程,JavaScript 都将是动态语言中的自然选择。在该领域中,Node.js 被证明是一个非常成功的软件平台。但
10 06 月 2020 JavaScript - 根据 SHA-256 算法返回哈希值 2020-06-10 描述使用 SHA-256 算法为指定的字符串创建一个哈希。返回 Promise。提示使用 cryptAPI 为给定的值创建一个哈希使用 setTImeout 防止耗时阻塞使用 Promise 为用户提供友好的接口代码 constcrypto=require('crypto');consthashNode=val=>newPromise(resolve=>setTimeout(()=>resolve(
10 06 月 2020 JavaScript - 当前进程的命令中是否带有指定参数 2020-06-09 描述检查运行当前进程的命令中是否包含指定的参数。提示使用 Array.prototype.every()和 Array.prototype.includes()来检测 process.argv 中是否包含所有指定的参数使用正则表达式来检测指定的参数中是否以-或者--为前缀开头,并相应的为他们添加参数代码 consthasFlags=(...flags)=>flags.every(flag=
08 06 月 2020 JavaScript - 创建目录 2020-06-08 描述当给定的目录不存在时,就创建一个。提示使用 fs.existsSync()检查目录是否存在不存在的话就使用 fs.mkdirSync()创建代码 constfs=require('fs');constcreateDirIfNotExists=dir=>(!fs.existsSync(dir)?fs.mkdirSync(dir):undefined);示例创建一个 test 目录:cre
06 06 月 2020 JavaScript - 多彩的控制台 2020-06-05 描述在文本中添加特殊字符使其在控制台中可以打印出彩色的字符串(需配合 console.log()使用)。提示使用模版字符串将特殊字符放入适当的颜色代码中想要使用背景色,可以在字符串的末尾添加一个特殊字符用来进行背景色的设置代码 constcolorize=(...args)=>({black:`\x1b[30m${args.join('')}`,red:`\x1b[31m${args
06 06 月 2020 JavaScript - 字符串进行 base-64 编码 2020-06-04 描述创建一个 base-64 编码的 ASCII 字符串,需将 String 对象中的每一个字符都视为二进制字节数据。提示使用二进制编码为给定的字符串创建一个 Buffer 使用 Buffer.toString('base64')返回编码后的字符串代码 constbtoa=str=>Buffer.from(str,'binary').toString('base64');示例编码以下字符串:btoa
03 06 月 2020 JavaScript - 解码 base-64 字符串 2020-06-03 描述将一个使用 base-64 编码的数据字符串进行解码。提示为使用 base-64 编码的字符串创建一个 Buffer 使用 Buffer.toString('binary')返回解码后的字符串代码 constatob=str=>Buffer.from(str,'base64').toString('binary');示例解码以下字符串:atob('Zm9vYmFy');//'foobar'返