我想查看目前 src/api.js 这段改动是在哪个commit 引入
}).catch(err => {
reject(err)
})
5 Ways to Make HTTP Requests in Node.js
我们主要用 axios,因为它基于promise
上个项目只有一处用了 request, 因为它提供流处理
我们需要一个基于 redis的轻量级的job queue, 和这个SO问题完全一样: Background processes in Node.js "After a user posts something to an app I want to crunch the data, request additional data from external resources, etc. All of this is quite time consuming, so I want it out of the req/res loop. "
google基本上只有三个结果 bee-queue , bull 和 kue 。其他几个星值都太低了, 参见 bee-queue vs bull vs kue vs node-resque vs queue vs tiny-workervs webworker-threads 。基于其他message queue,比如RabbitMQ, Kafka, ActiveMQ 的实现同样不考虑(下面bee-queue同样提到这点)
一开始,选择的bee-queue,因为它最简单,附带的example 一看就懂(这点做得比bull好)这也是它自己强调的。 bee-queue有篇wiki, Bee Queue's Origin 提到它开始用bull,但因为性能达不到要求就自己开发 bee-queue
如 12factor 所述, 我们的程序在不同的环境、不同平台的环境变量不同,如何有效的让程序读取环境变量一直是个问题。
上一个项目用了 per-env ,但 per-env 在 windows 上有bug 需要改它的代码,使用 cross-spawn
更重要问题是,per-env 其实就是把环境变量写在 package.json 里,感觉不如直接用 .env 包,避免 package.json 承载太多功能。
使用 .env 最大问题,它不建议把 .env 加到版本库,也不建议有多个.env 文件;但我们实际使用感觉就是要共享.env 文件,而且不同平台有不同 env 文件配置才能方便大家开发,所以到底这么解决?
介绍不同分词器的文章不少,较经典的有BosonNLP 11款开放中文分词引擎大比拼
可惜这11款分词器只有IK和结巴一直在更新elastic的分词器插件,Boson的插件已经很久没更新
所以加上elastic自带的smartcn 也就只有三种分词器可选。
注1:smartcn基于中科院的ictclas 但用的是1.0, 似乎没再更新
网上能找到关于webpack的文章很多,这几篇讲得较清楚,并基于webpack4
所有用到es6特性,我们都确认浏览器支持, 所以觉得把包转成es5是不必要的,但在实际使用中还是发现不转es5有不少坑。
首先,mocha还不支持es6,所以为了能跑 mocha 测试用例就需要babel转码。
写测试代码两个目的:检验代码正确性;示范正确调用方式
比起console.log
来debug module真的是好处多多。比如,可在运行时候配置关停;可对某块代码单独打log;不同颜色显示,显示两次调用时间差当然也是另一大好处。
这两篇文章把debug讲得很清楚
如何让pm2集群设置和socket.io 配合工作不是一件简单的事。 在SO提了这个这个问题没有答复,但我自己总结些东西。简单的说就是要么强制使用websocket要么不要用sticky session.
阿里云的负载均衡器还需配置会话保持
但因为我们使用了websocket,所以容器编排没有配置stick session
我们通过https://testable.io/ 做了socket.io的压力测试