一、源码组成
1.它有8000行c 代码,2000行javascript代码
2.node.js里内置的javascript包括了主程序src/node.js和模块程序lib/*.js
3.node.js所依赖的主要的库:v8,uv,zlib
二、js2c.py工具
node.js使用了v8附带的js2c.py工具把所有内置的js代码转换成c 里的数组,
生成node_natives.h直接include到程序中,成了c 源码的一部分,
这样做能提高内置js模块的编译效率。
通过js2c.py让每一个js文件都生成一个源码数组,转换后存放在build/src/node_natives.h里,
node_natives.h在node.js编译后才会生成。
大致代码结构如下:
struct _native {
const char* name;
const char* source;
size_t source_len;
};
static const struct _native natives[] = {
{ "node", node_native, sizeof(node_native)-1 },
{ "_debugger", _debugger_native, sizeof(_debugger_native)-1 },
{ "_linklist", _linklist_native, sizeof(_linklist_native)-1 },
{ "assert", assert_native, sizeof(assert_native)-1 },
{ "buffer", buffer_native, sizeof(buffer_native)-1 }
}
三、启动和加载
1.入口:node_main.cc,对命令行参数做解析处理后调用node::start(argc, argv)启动
2.初始化v8接口,v8::initialize()
3.在v8中创建并设置process对象:handle