node.js源码研究(启动与模块加载)-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 323693
  • 博文数量: 73
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1293
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-07 11:17
个人简介

爱运动,爱看书,爱生活!

文章分类

全部博文(73)

文章存档

2014年(7)

2013年(66)

分类: javascript

2014-03-05 18:00:42

一、源码组成
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
网站地图