Skip to content

更好的Node.js

选择

语法可难可易

Node.js 采用 JavaScript 语法,所以在写法上非常灵活,开发者的选择非常丰富。
至于采用哪种方式,要看团队的技术水平、战略规划和信仰。

进阶的 3 个阶段分别是面向过程、面向对象和函数式编程。
对于从 0 开始的团队来讲,可以先面向过程,然后随着团队的成熟一点一点增加难度,甚至可以使用各种转译器(CoffeeScript、TypeScript、Babel 等)。
当然,如果极客范儿十足,或者在某些特定场景下,使用函数式编程也是相当不错的选择。

JavaScript 仿佛是一门很“烂”的语言,因为上面的 3 个阶段,它做得很不好。
但在不同阶段它都能陪伴你成长,在你需要的时候,它可以给你更好的选择,这样看来,还有什么比这更好吗?!

面向过程

使用 Node.js 世界著名的 Web 框架 Express 编写的代码就是典型的面向过程的代码,了解基本语法,几乎可以无障碍阅读和编写,唯一要花点心思的就是理解 Express 框架的中间件机制,示例如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
const express = require('express')
const app = express()

app.get('/', function (req, res) {
    res.send('Hello World!')
})

app.listen(3000, function () {
    console.log('Example app listening on port 3000!')
})

这是典型的快而脏(Quick and Dirty)的代码,“简单粗暴”,能够更快地实现你想要的功能,无论你的水平如何,都能快速上手。

从这一点上来看,Node.js 无疑是对新手极其友好的平台。
其实上面这样的代码用在真正的业务中也是可行的,除了看起来不太优雅,其余的野咩有大碍。
如果想让代码更加优雅,我们可以使用 Koa 框架。

面向对象

当熟悉了 Node.js 语法之后,就会慢慢学习面向对象的写法,这是进阶的必经之路。
有一本著名的红皮书《JavaScript高级程序设计》,里面讲的一个重点内容就是 JavaScript 的面向对象用法。
对于 JavaScript 这种基于原型的面向对象语言来说,它不是纯粹的面向对象语言,写法很多变,有时甚至需要自己编写面向对象机制。

这里尤其要推荐一下 TypeScript,它无缝兼容 ES6 语法,并且提供静态类型、接口、反射、泛型等特性,不需要我们编写更多关于类机制的实现,在代码质量、抽象程度等方面都表现得比较好

单线程会“死”吗

小集群:单台服务器上多个实例

推荐使用 PM2 模块,绝大部分的产品环境部署都使用 PM2 模块,以前有很多项目用 forever,现在大部分都转为 PM2 了

PM2 非常强大,支持无缝重载、0 秒切换等,可实现各种监控、部署等功能

为 Node.js 正名

更好的实践

更好的 npm 替代品--Yarn

Yarn 是开源的 JavaScript 包管理器,由于 npm 在扩展内部使用时遇到了大小、性能和安全等方面的问题,Facebook 便携手 Exponent、Google 和 Tilde,在大型 JavaScript 框架上打造并测试了 Yarn,以便令其尽可能适用于多人开发。