先来个简单的公式
NodeJS = Foundation + V8 Engine + JS API
如果我们仔细看一下Node的源码,其中有23.8%的C++,5.6%的C,还有64.5%的JS.Foundation
中包含几大核心, File(文件操作),Network(网络),Event(事件驱动),Stream(流的概念),Module(模块系统). 这几块无一不是C/C++实现的.JS的解释器V8Engine更是C/C++实现的,别忘了Chrome可能是世界上最大的C/C++项目了.
Foundtion
既然是C++实现的,那么在各个操作系统上的实现肯定不一样了.你可以想想一下读取Linux上的文件和Win10上的文件的C++代码肯定不一样, 而且你的C++代码需要调用操作系统的C++API才能实现功能. 据我所知,大部分的操作系统都是用C/C++写成的.
JS API可能是通用的,因为Node为我们实现了一套C->JS的bridge,这样Node开发组的同学就可以用JS做一些API的封装和抽象.而社区里写npm package的同学可以只使用JS API 就可以做一些工具包了. 因为Foundation
和 V8Engine
已经接受了多年业界的考验. 在此感谢Google和社区默默贡献的C/C++程序员.