JS迭代器和生成器
背景
遍历数组的时候,我相信大多数人已经用上ES6的for...of语法了:
123456const arr = [1, 2, 3]for (const item of arr) { console.log(item)}// 1 2 3
那么我们能不能让自己创建的对象也支持for...of呢? 答案自然是可以的,这么好用的语法不给一个自定义支持简直天理难容。
引入
在Py ...
TS中keyof和typeof
这两个东西是用来进行类型推断的。
在JS中,如果想要动态访问属性,很容易写出下面的代码:
123function getProp(obj, key) { return obj[key]}
但是TS呢? 如果使用any大法,就写出下面这样的代码了:
123function getProp(obj: any, key: string) { return obj ...
JS统计中英文字数
源码
来自半年后的说明:我把代码转放到 gists 里了,当时代码风格受 Python 影响较大,这里就不再更改了,毕竟大家本地都有自己的格式化工具。
点击这里前往Github获取本文源码。
需求
众所周知,英文里的字数是单词数,而中文的字数就是字的个数。
那么我的第一想法自然是分开统计,之后汇总。
方案
匹配中文字符的正则是[\u4e00-\u9fa5],因此写出下列代码:
12345678 ...
Nginx处理静态资源缓存问题
配置
说来简单,就是在Nginx里面这样写:
1234location / { add_header Cache-Control no-cache; # 其它的配置}
这里的no-cache和no-store呈现效果相似,区别在下面。
no-cache
no-cache,被称为协商缓存,也就是会查一下服务器的资源和缓存资源是否相同,如果是就用缓存,不是就会重新获取。 ...
借助函数柯里化实现读取Markdown元数据
定义
柯里化(英语:Currying) 是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
来源: 维基百科
说白了就是返回函数的函数,其实在开发过程中多半已经用过了,只是之前没有去了解过这个东西叫什么。
我认为,他还可以是被看为一种轻量级的面向对象。
示例
定义一个getAdder函数,返回一个adder:
1234 ...
Nginx配置HTTPS证书
确保打开443端口
以阿里云为例,来到控制台打开实例界面,然后点击配置安全组规则:
随后点击配置规则:
开放443端口:
我就是这里没打开,导致后面死活不成功。
用Certbot生成证书
去到官网。我这里把在Ubuntu18的Nginx安装的步骤抄了一遍。
安装snapd:
1sudo apt install snapd
确保你版本最新(我认为这一步可以跳过,不过他都 ...
浅谈Nginx反向代理
先来点轻松的
献上一张图:
不要在乎这水印叠杀人书,我实在是找不到原图了。
介绍
反向代理在电脑网络中是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器集群的存在。
来源: 维基百科
说人话,就是反向代理是后端之间的通信,前端看不着。
这样的好 ...
JS写睡眠排序
实现
代码看起来很简单,这里就直接给出来了:
1234567891011121314151617function sleepSort(nums) { const result = [] return new Promise(resolve => { for (const num of nums) { setTime ...
NodeJS递归创建目录
看到很多博主都自己写一个方法实现递归调用,其实不需要,在v10.12.0以上的node环境可以配置一个参数:
1fs.mkdirSync('./foo/bar', { recursive: true })
这样就可以直接实现递归创建文件夹了。
箭头函数和对象
箭头函数的函数体被解析成了对象,而标签又是一个合法的语法,所以产生了这个问题。