朴灵大大的书好难看懂
发布于 7 年前 作者 q86002618 5427 次浏览 来自 分享

第二章里面讲模块分析,讲到C/C++模块编译的时候直接就晕了😖,一大片C/C++代码

来自酷炫的 CNodeMD

19 回复

市面上讲实战,讲怎么调用 api 的书太多了吧,朴老师的书算是难得的讲解深入底层原理的书了

来自酷炫的 CNodeMD

那可去试试 Pedro Teixera 的 Hands on Node.js。中译本似乎叫《Node.js 实战》,不过注意作者,用这个名字的很多。

@hyj1991 看过《了不起的Node.js》了,然后再来看看这个,发现难度还是很高很高(=_=)

来自酷炫的 CNodeMD

@pinxue 这本涉及底层原理了吗

来自酷炫的 CNodeMD

@q86002618 看看目录自己判断吧,关注 Node 本身的基本概念和自带库,比较适合平时用框架比较多的在深入代码实现前看看。

@pinxue 当当没搜到这本书,豆瓣也没有,不过倒是找到这个作者另外一本书《Node.js高级编程》,看目录确实是讲的Node.js本身的东西,不知道你说的是不是这一本?

来自酷炫的 CNodeMD

@pinxue 确实有这么一本书,但是翻遍淘宝 京东 当当 豆瓣 亚马逊 孔夫子旧书网都没有😭

来自酷炫的 CNodeMD

@pinxue 应该停产了

来自酷炫的 CNodeMD

你们学校没有c和c++课程么。。

来自酷炫的 CNodeMD

@vanishcode 不是,是太久没碰C++了。这几天耐心看慢慢看懂了,主要是有点怕C/C++,所以看到瞬间有点胆怯

来自酷炫的 CNodeMD

@q86002618 想了解跟多 Node.js 与 C++ 搞基的内容,可以期待下我正在写的书,预计八月份完稿。《Node.js:来一打 C++ 扩展》

@xadillax (ง •̀_•́)ง加油,期待

来自酷炫的 CNodeMD

@q86002618 那书貌似是下架了……

理解模块加载,其实完全不需要知道 native plugin 是怎么生产出来的,顺着 module.js 看下去就好。这是我以前的笔记:

当 require() 一个模块时,module.js 里 Module._extentions[ext] 加载器负责处理 模块。

node.js 实现了 3 个加载器: // Native extension for .js Module._extensions[’.js’] = function(module, filename) { var content = fs.readFileSync(filename, ‘utf8’); module._compile(internalModule.stripBOM(content), filename); };

// Native extension for .json Module._extensions[’.json’] = function(module, filename) { var content = fs.readFileSync(filename, ‘utf8’); try { module.exports = JSON.parse(internalModule.stripBOM(content)); } catch (err) { err.message = filename + ': ’ + err.message; throw err; } };

//Native extension for .node Module._extensions[’.node’] = function(module, filename) { return process.dlopen(module, path._makeLong(filename)); };

process.dlopen => DLOpen https://github.com/nodejs/node/blob/master/src/node.cc#L2438 uv_dlopen() —> mp check: mp.nm_version is NODE_MODULE_VERSION mp.nm_flag not contains NM_F_BUILTIN one should exists and be called: nm_context_register_func(exports, module, env->context(), mp.nm_priv) nm_register_func(exports, module, mp.nm_priv)

至于原生模块的编写和编译,https://github.com/workshopper/goingnative 这个node-gyp教程挺不错的,顺着下来上手能写,再去看实现细节就容易了。不过,教程没有解释跟 v8 vm 交互时涉及到的js对象模型,得另找文章看。

@pinxue 谢谢前辈

来自酷炫的 CNodeMD

@pinxue 我好像都不记得自己校对过这本书。。晕

@alsotang 可能是那个 alsotang 不是你

@fengmk2 这本书网上都搜不到。。奇怪。这三个作者可能由于是中文名所以我也不熟悉

@alsotang 都忘了什么时候在 kindle 里收的,现在啥地方都找不到,也是醉了…… 好在英文版还在,感兴趣的可以去 https://leanpub.com/hands-on-nodejs

回到顶部