Nodejs新版本8.9.0和9.2.0更新啦

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

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

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

第二次接触是在进入奇鸟后,认识了磊哥,于是又开始了Nodejs之旅,这回让我对js有了重新的认识,以往的普通语法认知和视野认知进入到了一个更深的层面。

当时记得做一个逻辑,需要查询数据库,然后需要根据查询的结果做逻辑处理,要是知道,js的特性,那个时候就是一层层的嵌套,后来在使用过程中,了解到了co,async之类的库,就摆脱了一层一层剥洋葱的感觉,也学会了原来,还可以有这样的库能够被使用

比如下面这样一层一层深入

1
2
3
4
5
6
7
8
9
10
11
connection.query(sql, function(data, function(err, callback) {
if (err) {
return callback();
}

if (data) { // 具体的逻辑处理
connection.query(sql, function(data, function(err, callback) {
// 具体的逻辑处理 可能还有其他的需求
});
}
})

下面试用co跟async的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
async.waterfall([
function(callback) {
if (accessToken) {
getUidByToken(accessToken, function(err, uid) {
if (err) {
return callback(null, 0);
}
callback(null, uid);
})
} else {
callback(null, 0);
}
},
function(uid, callback) {
var sql = `... where user_id = uid`;
mysql.query({sql: sql}, function(err, row) {
callback(err, row);
})
}
], function(err) {
if (err) {
return next(err);
}
res.json(OKPacket);
});
1
2
3
4
5
6
7
8
9
10
co(function* () {
let _isAdmin = yield Promise.resolve(true);
if (!_isAdmin) {
throw new Error('Admin only.');
}
let sql = ``;
yield mysql.queyr(sql);
})
.then(val => res.json({suceess: true, data: []}))
.catch(e => next(e));

是不是感觉要比一层一层深入要好很多,虽然是这样,但是依然不能达到自己去深入Nodejs这块的学习。

后来又了解到了koajs,感觉自己时刻跟不上时代的进步,仅仅不到一年的时间,各种新的技术如雨后春笋般,一个一个冒出来。

后来又接触到了Reactjs,ReactNative,Webpack,Gulp,Grunt,Pm2等,短短的时间内感觉自己提升了好几个级别。

但是Nodejs中的各种新的语法也在渐渐的完善。

如今我自己写的代码,大部分是使用了Babel进行了编译后去运行,毕竟使用的版本中很多新的语法还不支持。

比如这个,就是目前我使用了8.9.1这个版本后的.babelrc配置文件

1
2
3
4
5
{
"plugins": [
'transform-es2015-modules-commonjs',
]
}

对比下以前的

1
2
3
4
5
6
7
8
9
10
11
12
{
"presets": ["es2015"],
"plugins": [
'transform-async-to-generator',
'transform-strict-mode',
'transform-object-assign',
'transform-class-properties',
'transform-export-extensions',
'transform-runtime',
'transform-decorators-legacy'
]
}

感觉瞬间清爽了许多,应该在开发中,每次写完代码进行编译的速度都快了很多。再过几年import/export被支持的时候,就彻底释放了。

感觉Nodejs这种语言很随意又很严格,随意就是,你可以啥也不管,只能运行就行,可以使用原来的方式。

严格就是,当你对自己严格的时候,你的代码也会严格起来,而且严格的结果就是感觉新的血液不停的在沸腾。