「能用 JavaScript 编写的程序,都终将会以 JavaScript 编写。」这句话曾经听起来十分高傲,但是随著 Node.js 的发展,我们渐渐地明白到这句话的远见性──JavaScript 真的越来越强大了。
Node.js 是一个非常新兴的开发工具,它诞生自 2009 年,年龄远不如 Python、Ruby、PHP 等老大哥,但是它确实有史以来发展最快的开发工具,没有之一。在这短短的几年间,我们看到了 Node.js 从当初的一无所有到如今的飞速发展,这是没有任何其他开发工具能够媲美的。
Ryan Dahl,网名 ry,虽然如今已经没有多少人了解这一名字。是的,他就是 Node.js 的亲爹,我们依稀还记得那个安装 Node.js 需要执行这行命令的日子。
$ git clone https://github.com/ry/node.git
其实 Node.js 最开始叫 「Web.js」(发布之前),后来因为 API 设计越来越庞大,ry 和他的团队依稀感觉到 Web.js 已经过于狭隘了,于是就有了现在的名字。
API 开始大面积进入 Stable 和 Locked 状态时,大批开发者便开始使用 Node.js 干各种事情,这个区间是 v0.6~v0.8 之间。Joyent 公司收购了 Node.js 原开发团队也是推动力之一。
Io.js 的出现是因为在 Node.js 的核心开发者群体中,出现了一些不太友好的性别歧视事件,导致核心开发组与 Joyent 公司决裂,直接从 Node.js 的 GitHub 代码库 Fork 了一个出来,并重命名为 Io.js。而很长一段时间内,Io.js 确实 Node.js 世界真正的主导,因为无论是核心开发者还是核心用户群都聚集在 Io.js 社区中,而且 Io.js 很大的优势便是原生开启 ES Harmony 支持模式,而不需要使用「--harmony
」。
合久必分,分久必合。如今 Io.js 社区已经与 Joyent 公司达成共识,代码库再次回归到 Node.js 主线中来,Node.js 开发组委会也由原 Io.js 开发组和 Joyent 公司联合建立。
NPM 目前已经是一家独立的公司,由它的发明者 Issac 建立,是如今世界上最大的包管理平台之一,也是发展最快的一个。目前已有 210,081 个模块,每天下载次数达到 83,000,000 次。
--harmony
作为开启阀门。后来,诞生了 Io.js 分支,再后来也回到了 Node.js 主线上。Node.js 可以说是一种轻量的、可模块化的开发工具,就目前而言,它适合作为以下场景的开发工具:
Node.js 的运维部署一直处在一个演变的进行时,从一开始的 nohup
原生命令,到利用 supervisor
工具,后来出现了 forever
、pm2
,还有以 Nginx 插件存在的 Passion Passenger。
Node.js 与 Go、Java 等语言不同的是,JavaScript 是一门解析型语言,任何非语法上的错误在默认情况下都不会在被运行之前抛出,这就导致了 Node.js 的进程对于错误来说是脆弱的。所以我们需要一些“保姆进程”来保证进程的存活。
而且 Node.js 的环境部署虽然较几年前已经简单了非常多,但是依然是需要数次的等待。
当然有!Node.js 官方已经提供了 Node.js Docker 镜像,你可以直接从 DaoCloud 的镜像仓库中获取。
这里奉上使用 DaoCloud 构建 Node.js 应用的实例:DaoCloud Node.js Example。