企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
如果想要编写高质量的C/C++扩展模块,还需要深厚的C/C++编程功底才行。除此之外,以下这些条目都是不能避开的,在了解它们后,可以让你在编写过程中事半功倍。 ## GYP项目生成工具 在Node 0.6中,第三方模块通过它自身提供的node_waf工具实现编译,但是它是`*nix`平台下的产物,无法实现跨平台编译。在Node 0.8 中,Node决定摒弃掉node_waf而采用跨平台效果更好的项目生成器,它就是GYP工具,即“Generate Your Projects”单词的缩写。它的好处在于,可以帮助你生成各个平台下的项目文件,比如Windows下的Visual Studio解决方案文件(.sln)、Mac下的XCode项目配置文件以及Scons工具。在这个基础上,再动用各个平台下的编译器编译项目。这大大减少了跨平台模块在项目组织上的精力投入。 Node源码中一度出现过各种项目文件,后来均统一为GYP工具。这除了可以减少编写跨平台项目文件的工作量外,另一个简单的原因就是Node自身的源码就是通过GYP编译的。为此,Nathan Rajlich基于GYP为Node提供了一个专有的扩展构建工具node-gyp,这个工具通过 `npm install -g node-gyp` 这个命令即可安装。 ## V8引擎C++库 V8是Node自身的动力来源之一。它自身由C++写成,可以实现JavaScript与C++的互相调用。 ## libuv库 它是Node自身的动力来源之二。Node能够实现跨平台的一个诀窍就是它的libuv库,这个库是跨平台的一层封装,通过它去调用一些底层操作,比自己在各个平台下编写实现要高效的多。libuv封装的功能包括事件循环、文件操作等。 ## Node内部库 写C++模块时,免不了要做一些面向对象编程工作,而Node自身提供了一些C++代码,比如node::ObjectWrap类可以用来包装你的自定义类,它可以帮助实现对象回收等工作。 ## 其它库 其它存在deps目录下的库在编写扩展模块时也许可以帮助你,比如zlib、openssl、http_parser等。