Nodejs新版本8.9.0和9.2.0更新啦

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

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

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

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

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

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

connection.query(sql, function(data, function(err, callback) {
  if (err) {
    return callback();
  }

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

下面试用co跟async的方法

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);
});
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配置文件

{
  "plugins": [
    'transform-es2015-modules-commonjs',
  ]
}

对比下以前的

{
  "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这种语言很随意又很严格,随意就是,你可以啥也不管,只能运行就行,可以使用原来的方式。

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

就是简单的几点感想,睡觉了,哈哈

comments powered by Disqus