这一篇我要把 References 写在前面:

通过这一系列文章,大神已经自顶向下的把构建一个合格的 RESTful API Server 的要点都涉及到了,并且基本都是最佳实践,值得反复咀嚼。这一篇我结合自己的实践做一些 localization 的总结和实践归纳。文中都以 Node.js 的 Express 框架来举例。

阅读全文 »

Promise 应该是目前 JavaScript 中最流行的异步流程控制解决方案,本文将介绍如何使用 JavaScript ES6 的语言特性,实现一个轻量级的通过了所有官方测例标准的 Promise 库。了解其原理,深入其实现。实际上,Promise 也早已被写入 JavaScript ES6 的标准,作为官方支持的标准异步流程控制解决方案之一。用 ES6 语法实现一个 ES6 中的 Promise,虽然看似没有必要,不过对于深入理解 Promise 以便更好的使用大有裨益。

为了您的最佳阅读体验,在阅读本文之前,建议您已经做到如下事情:

  • 可以熟练使用至少任意一个 Promise 库,如 bluebird、Q 等;
  • 了解 Promise 标准,可以看这里
  • 熟悉主要的 JavaScript ES6 特性;
阅读全文 »

随便翻开一本 Node.js 入门书籍的绪论部分,一般都可以看到「异步」、「单线程」、「非阻塞」这样的字眼。因其采用异步非阻塞的模型而构建,Node.js 得以能充分利用 CPU 资源,具有极强的处理高并发请求的能力。

可是到底什么是同步和异步?什么是阻塞和非阻塞?同步就意味着阻塞吗?异步就一定是非阻塞吗?即便是业务经验十分丰富的 Node.js 程序员,都不一定对这些概念辨别得十分明晰。

本文力求以简明的语言来解释清楚这几个概念并加以区分,但不涉及到 Node.js 底层的具体实现。

阅读全文 »

Node.js 开发一般不容易遇到真正的模块循环依赖的情况,可是当你的项目开始达到一定的复杂度之后,你很有可能在你的 Node.js 编码生涯中遇到几次。而且如果你之前没有关于这方面的意识,Debug 可能会花费不少的时间。

我在最近的项目中就遇到了这种情况,而且不能轻易通过项目架构的重构来解决。具体来说,A 文件中需要用 B 文件中某些函数,B 文件又需要用到 A 文件中的某些函数。

阅读全文 »