NODE.JS:来一打C++扩展

本书特色

[

本书讲解了如何在 Node.js 上写 C 的原生模块以供使用,包括且不仅限于一些 API 和原理的介绍,但是不包括 Node.js 的基础入门知识(如语法等)。目标是读者能用 C 写出 Node.js 原生模块来提高开发和运行效率。

]

内容简介

[

本书讲解了如何在 Node.js 上写 C++ 的原生模块以供使用,包括且不有且只有于一些 API 和原理的介绍,但是不包括 Node.js 的基础入门知识(如语法等)。目标是读者能用 C++ 写出 Node.js 原生模块来提高开发和运行效率。

]

作者简介

[

朱凯迪,花名“死月”,国内早期 Node.js 开发者之一,现为Node.js Collaborator(核心贡献者)之一。擅造轮子,包括Node.js的C 扩展。

]

目录

1 Node.js 的 C 扩展前驱知识储备 / 11.1 Node.js 的模块机制 / 21.1.1 CommonJS 的模块规范 / 21.1.2 Node.js 的模块 / 41.1.3 小结 / 91.1.4 参考资料 / 91.2 Node.js 的包机制 / 9 1.2.1 CommonJS 的包规范 / 91.2.2 Node.js / NPM 下的包 / 131.2.3 NPM 与 CNPM / 161.2.4 小结 / 191.2.5 参考资料 / 191.3 Node.js 依赖简介 / 201.3.1 Chrome V8 / 201.3.2 libuv / 251.3.3 其他依赖 / 281.3.4 小结 / 301.3.5 参考资料 / 301.4 C 扩展开发的准备工作 / 311.4.1 编辑器 / IDE / 311.4.2 node-gyp / 361.4.3 其他构建工具 / 541.4.4 小结 / 561.4.5 参考资料 / 562 C 模块原理简析 / 572.1 为什么要写 C 模块 / 572.1.1 C 比 JavaScript 解释器高效 / 572.1.2 已有的 C 轮子 / 722.1.3 小结 / 772.1.4 参考资料 / 772.2 什么是 C 扩展 / 782.2.1 C 模块本质 / 802.2.3 小结 / 1022.2.4 参考资料 / 1033 Chrome V8 基础 / 1043.1 Node.js 与 Chrome V8 / 1043.2 基本概念 / 1053.2.1 内存机制 / 1053.2.2 隔离实例(Isolate) / 1083.2.3 上下文(Context) / 1093.2.4 脚本(Script) / 1103.2.5 小结 / 1103.2.6 参考资料 / 1113.3 句柄(Handle / 1113.3.1 本地句柄(Local) / 1123.3.2 持久句柄(Persistent) / 1153.3.3 永生句柄(Eternal) / 1193.3.4 待实本地句柄(Maybe Local) / 1193.3.5 小结 / 1213.3.6 参考资料 / 1213.4 句柄作用域 / 1213.4.1 一般句柄作用域(Handle Scope) / 1223.4.2 可逃句柄作用域(Escapable Handle Scope) / 1253.4.3 小结 / 1293.4.4 参考资料 / 1293.5 上下文(Context) / 1293.6 模板(Template) / 1333.6.1 函数模板(Function Template) / 1333.6.2 对象模板(Object Template) / 1383.6.3 对象模板的访问器(Accessor)与拦截器(Interceptor) / 1443.6.4 对象模板的内置字段(Internal Field) / 1753.6.5 函数模板的继承(Inherit) / 1833.6.6 小结 / 1883.6.7 参考资料 / 1893.7 常用数据类型 / 1893.7.1 基值(Value) / 1893.7.2 字符串(String) / 1943.7.3 数值类型 / 1963.7.4 布尔类型(Boolean) / 1963.7.5 对象(Object) / 1963.7.6 函数(Function) / 2003.7.7 数组(Array) / 2023.7.8 JSON 解析器 / 2033.7.9 函数回调信息(Function Callback Info) / 2033.7.10 函数返回值(Return Value) / 2043.7.11 隔离实例(Isolate) / 2043.7.12 小结 / 2053.7.13 参考资料 / 2063.8 异常机制. / 2063.8.1 try-catch / 2063.8.2 抛出异常 / 2093.8.3 异常生成类(Exception) / 2113.8.4 小结 / 2113.8.5 参考资料 / 2114 C 扩展实战初探 / 2124.1 binding.gyp / 2124.1.1 惊鸿一瞥 / 2134.1.2 binding.gyp 基础结构 / 2134.1.3 GYP 文件 / 2144.1.4 常用字段 / 2214.1.5 小结 / 2284.1.6 参考资料 / 2284.2 牛刀小试. / 2294.2.1 又是 Hello World / 2294.2.2 函数参数 / 2324.2.3 回调函数 / 2344.2.4 函数返回 / 2384.2.5 小结 / 2394.2.6 参考资料 / 2404.3 循序渐进 / 2404.3.1 C 与 JavaScript 类封装 / 2404.3.2 实例化 C 类封装对象的函数 / 2504.3.3 将 C 类封装对象传来传去 / 2534.3.4 进程退出钩子 / 2554.3.5 小结 / 2594.3.6 参考资料 / 2595 Node.js 原生抽象——NAN / 2605.1 Node.js 原生模块开发方式的变迁 / 2605.1.1 以不变应万变 / 2605.1.2 时代在召唤 / 2615.1.3 小结 / 2675.1.4 参考资料 / 2675.2 基础开发 / 2675.2.1 什么是 NAN / 2675.2.2 安装和配置 / 2695.2.3 先睹为快——搭上NAN 的快车 / 2705.2.4 基础帮助函数和宏 / 2765.2.5 忽略 node_modules / 2795.2.6 小结 / 2795.2.7 参考资料 / 280XXII Node.js:来一打C 扩展5.3 JavaScript 函数 / 2805.3.1 函数参数类型 / 2805.3.2 函数声明 / 2825.3.3 函数设置 / 2885.3.4 小结 / 2965.3.5 参考资料 / 2965.4 常用帮助类与函数. / 2965.4.1 句柄相关 / 2965.4.2 创建数据对象 / 2985.4.3 与数据对象“玩耍” / 3005.4.4 封装一个类 / 3145.4.5 异常处理 / 3155.4.6 小结 / 3155.4.7 参考资料 / 3165.5 NAN 中的异步机制 / 3165.5.1 Nan::AsyncQueueWorker / 3165.5.2 Nan::Callback / 3175.5.3 Nan::AsyncWorker / 3175.5.4 Nan::AsyncProgressWorker / 3235.5.5 小结 / 3275.5.6 参考资料 . / 3276 异步之旅——libuv / 3286.1 基础概念 / 3296.1.1 事件循环 / 3306.1.2 句柄(Handle)与请求(Request) / 3336.1.3 尝尝甜头 / 3356.1.4 小结 / 3406.1.5 参考资料 / 3406.2 libuv 的跨线程编程基础 / 3416.2.1 libuv 的线程 / 3426.2.2 同步原语(Synchronization Primitive) / 3476.2.3 工作队列 / 3556.2.4 小结 / 3566.2.5 参考资料 / 3576.3 跨线程通信 / 3576.3.1 uv_async_t 句柄 / 3576.3.2 Watchdog 半成品实战解析 / 3586.3.3 Watchdog 试运行 / 3676.3.4 小结 / 3686.3.5 参考资料 / 3697 实战——文件监视器. / 3707.1 准备工作 / 3707.1.1 功能规划 / 3707.1.2 文件系统监听库——efsw / 3737.1.3 小结 / 3767.1.4 参考资料 / 3767.2 核心设计 / 3767.2.1 API 设计 . / 3777.2.2 EFSWCore 的血肉之躯 / 3777.2.3 EFSWCore 的灵魂 / 3817.2.4 小结 / 3857.3 编写JavaScript 类 / 3867.3.1 类的设计 / 3867.3.2 核心逻辑 / 3887.3.3 简单容错 / 3917.3.4 小结 / 3937.4 进一步完善 / 3937.4.1 C 代码的完善 / 3937.4.2 JavaScript 代码的完善 / 3987.4.3 小结 / 4008 实战——现有包剖析 / 4018.1 字符串哈希模块——Bling Hashes / 4018.1.1 文件设定 / 4028.1.2 C 源码剖析 / 4038.1.3 JavaScript 源码剖析 / 4088.1.4 小结 / 4098.1.5 参考资料 / 4108.2 类 Proxy 包——Auto Object / 4108.2.1 Proxy / 4108.2.2 Auto Object 使用范例 / 4128.2.3 代码剖析 / 4158.2.4 小结 / 4248.2.5 参考资料 / 4249 N-API——下一代 Node.js C 扩展开发方式 / 4259.1 浅尝辄止 / 4269.1.1 实现一个 Echo 函数 / 4269.1.2 尝试运行 N-API 扩展 / 4309.1.3 向下兼容 / 4319.1.4 N-API Package——C 封装 / 4339.1.5 小结 / 4339.1.6 参考资料 / 4339.2 基本数据类型与错误处理 / 4339.2.1 基本数据类型 / 4339.2.2 与作用域及生命周期相关的数据类型 / 4359.2.3 回调数据类型 / 4389.2.4 错误处理 / 4399.2.5 模块注册 / 4419.2.6 小结 / . 4429.2.7 参考资料 / 4429.3 对象与函数 / 4429.3.1 对象 / 4429.3.2 函数 / 4489.3.3 类的封装 / 4539.3.4 小结 / 4559.3.5 参考资料v455

封面

NODE.JS:来一打C++扩展

书名:NODE.JS:来一打C++扩展

作者:死月

页数:480

定价:¥109.0

出版社:电子工业出版社

出版日期:2017-06-01

ISBN:9787121336423

PDF电子书大小:152MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注