Nodejs新版本8.9.0和9.2.0更新啦

这个11月,Nodejs新版本更新了,欢呼雀跃呀。

记得大概从2014年刚开始接触,到进入新公司后正式使用Nodejs已经有大概会3年了,大概也算是我比较喜欢的语言中的一种。

第一次接触的时候,就基本上只是用来运行js脚本,当时爬取网站的时候,有很多js的调用,需要运行后才有结果,当时自己还只是在用PHP,重写的话有相当的耗时,于是就有了第一次接触,之后断断续续就没有怎么接触了。

第二次接触

...

Nodejs 中解决 no-await-in-loop

在使用nodejs中的async/await方法的时候,在map,forEach中使用await的时候,eslint总是提示我no-await-in-loop。对于我比较喜欢正规写代码的人讲,忍受不了这种错误提示。最终还是找到了解决办法。

一般什么情况会有这个错误的呢,如下

async test() {
  const testData = [1, 2, 3];
  testData.for
...

Nodejs 通过 fs.createWriteStream 保存文件

工作中难免会遇到处理大文件的时候,有这种stream的处理方式,就不需要一次处理太大的文件,从而导致内存不够用,或者内存占用太多。

fs.createWriteStream 似乎不会自己创建不存在的文件夹,所以在使用之前需要注意,保存文件的文件夹一定要提前创建。

const path = '/xxxxxx/ddd/';

if (!fs.existsSync(path)) {
  fs.mkdirSy
...

NodeJs 版本8.5 体验experimental-modules

最近NodeJs 版本 8.5 已经支持了 ESM module,感觉之前的babel编译可以放弃不用了,不过这个只是一个实验性的,具体稳定与否,是否可以上生产环境,还是需要测试一段时间的。

体验环境搭建:

NodeJs: v8.5.0

依赖包:

  "dependencies": {
    "axios": "^0.16.2",
    "koa": "^2.3.0",
    "koa-router
...

node.js 应用性能分析

node.js 从 4.4.0 版本开始内置了 profiler, --prof 命令选项运行应用会在当前目录生成性能日志文件。

简单记录下使用方法

运行的时候加上 --prof 参数

node app.js --prof

运行后会在当前目录生成一个类似:isolate-0x1d1e1b0-v8-10041.log这样的文件

执行如下命令来分析程序的性能

node --prof-process isolate
...

Nodejs 之 __dirname 的使用

新建个文件

app.js

里面的内容如下:

console.log(__dirname + '/example.db');
console.log('example.db');

如果将app.js放在一个根目录下面

执行node app.js

分别输出如下内容:

/Users/durban/nodejs/koa-mysql-orm-model/example.db
example.db


我们建立一个文件夹app,

...

Nodejs 数据加密传输

数据加密传输,这个目前我接触的几个方式,一个是密文传输,一个明文传输


密文传输,就是用密钥对数据加密,使用公钥对数据解密,传输的通道可以是https的也可以是http的。

明文传输,前提是建立一个安全的传输通道,这里使用证书对通道的安全做了防护,然后传输数据,使用的是明文。


比较专业的 可以后面慢慢分享,不过这里我就介绍下明文传输,如果是用nodejs建立安全通道

使用两个库,分别是urllib和requ

...

PM2启动配置文件参数

PM2启动配置文件参数比较全的一个。如下:

{
  "name"             : "node-app",
  "cwd"              : "/srv/node-app/current",
  "args"             : ["--toto=heya coco", "-d", "1"],
  "script"           : "bin/app.js",
 
...

Nodejs - 通过身份证号验证年龄,出生日期和性别

想要知道自己的年龄,出生日期和性别,或者是别人的,给我个身份证号,我就可以知道,看下面代码。

static validateIdNumberToAgeYear(str){
  let date = new Date();
  let currentYear = date.getFullYear();
  let currentMonth = date.getMonth() + 1;
  let cu
...