这个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这种语言很随意又很严格,随意就是,你可以啥也不管,只能运行就行,可以使用原来的方式。
严格就是,当你对自己严格的时候,你的代码也会严格起来,而且严格的结果就是感觉新的血液不停的在沸腾。