kindle电子书

资源下载,尽在我的书库!
首页 > kindle电子书库 > 典藏频道 > 工农林医、科学科普、IT网络

Node.js:来一打C++扩展

  • 作者:[中] 死月
  • 体积:63.50 MB
  • 语言:中文
  • 日期:2018-09-19
  • 推荐:

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

电子书详细介绍

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

编辑推荐

目前市面上的图书多停留在对Node.js入门知识的讲解,如果想进一步提升功力,你会发现无书可觅,无秘籍可得!现在,《Node.js:来一打C++扩展》来了,正好可以满足你的刚需——学习完本书,你可以毫无压力地秒变全端高手!打通任督二脉,笑傲江湖!
《Node.js:来一打 C++ 扩展》在深度上远远超过了目前市面上的Node书籍。全书自始至终围绕一个主题展开:从介绍 Node.js 的包和模块规范开始,深入解析(包括但不限于剖析 Node.js 自身的源码) Node.js 的模块是如何在运行时被引入的,尤其是如何引入 C++ 模块的;接下来详细讲解了在什么时候、为何要编写 C++ 模块;借此契机,深入介绍了 Node.js 的基石 Chrome V8 和 libuv,以及异步非阻塞的原理——不仅如此,本书更教你如何在底层去驾驭它们。所以,本书以 Node.js 的 C++ 扩展为中心,衍生出对Node.js 底层风光的层层剖析,最后再回归到如何编写 Node.js 的 C++ 扩展,一气呵成。读来酣畅淋漓,痛快不已!
买这一本书相当于买了“Node.js 的底层风格、 C++ 扩展编写、Chrome V8和libuv三本书!
读完本书后,你甚至能为 Node.js 自身的添砖加瓦做出非凡贡献。

作者简介

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

目录

1 Node.js 的 C++ 扩展前驱知识储备 / 1
1.1 Node.js 的模块机制 / 2
1.1.1 CommonJS 的模块规范 / 2
1.1.2 Node.js 的模块 / 4
1.1.3 小结 / 9
1.1.4 参考资料 / 9
1.2 Node.js 的包机制 / 9 
1.2.1 CommonJS 的包规范 / 9
1.2.2 Node.js / NPM 下的包 / 13
1.2.3 NPM 与 CNPM / 16
1.2.4 小结 / 19
1.2.5 参考资料 / 19
1.3 Node.js 依赖简介 / 20
1.3.1 Chrome V8 / 20
1.3.2 libuv / 25
1.3.3 其他依赖 / 28
1.3.4 小结 / 30
1.3.5 参考资料 / 30
1.4 C++ 扩展开发的准备工作 / 31
1.4.1 编辑器 / IDE / 31
1.4.2 node-gyp / 36
1.4.3 其他构建工具 / 54
1.4.4 小结 / 56
1.4.5 参考资料 / 56
2 C++ 模块原理简析 / 57
2.1 为什么要写 C++ 模块 / 57
2.1.1 C++ 比 JavaScript 解释器高效 / 57
2.1.2 已有的 C++ 轮子 / 72
2.1.3 小结 / 77
2.1.4 参考资料 / 77
2.2 什么是 C++ 扩展 / 78
2.2.1 C++ 模块本质 / 80
2.2.3 小结 / 102
2.2.4 参考资料 / 103
3 Chrome V8 基础 / 104
3.1 Node.js 与 Chrome V8 / 104
3.2 基本概念 / 105
3.2.1 内存机制 / 105
3.2.2 隔离实例(Isolate) / 108
3.2.3 上下文(Context) / 109
3.2.4 脚本(Script) / 110
3.2.5 小结 / 110
3.2.6 参考资料 / 111
3.3 句柄(Handle / 111
3.3.1 本地句柄(Local) / 112
3.3.2 持久句柄(Persistent) / 115
3.3.3 永生句柄(Eternal) / 119
3.3.4 待实本地句柄(Maybe Local) / 119
3.3.5 小结 / 121
3.3.6 参考资料 / 121
3.4 句柄作用域 / 121
3.4.1 一般句柄作用域(Handle Scope) / 122
3.4.2 可逃句柄作用域(Escapable Handle Scope) / 125
3.4.3 小结 / 129
3.4.4 参考资料 / 129
3.5 上下文(Context) / 129
3.6 模板(Template) / 133
3.6.1 函数模板(Function Template) / 133
3.6.2 对象模板(Object Template) / 138
3.6.3 对象模板的访问器(Accessor)与拦截器(Interceptor) / 144
3.6.4 对象模板的内置字段(Internal Field) / 175
3.6.5 函数模板的继承(Inherit) / 183
3.6.6 小结 / 188
3.6.7 参考资料 / 189
3.7 常用数据类型 / 189
3.7.1 基值(Value) / 189
3.7.2 字符串(String) / 194
3.7.3 数值类型 / 196
3.7.4 布尔类型(Boolean) / 196
3.7.5 对象(Object) / 196
3.7.6 函数(Function) / 200
3.7.7 数组(Array) / 202
3.7.8 JSON 解析器 / 203
3.7.9 函数回调信息(Function Callback Info) / 203
3.7.10 函数返回值(Return Value) / 204
3.7.11 隔离实例(Isolate) / 204
3.7.12 小结 / 205
3.7.13 参考资料 / 206
3.8 异常机制. / 206
3.8.1 try-catch / 206
3.8.2 抛出异常 / 209
3.8.3 异常生成类(Exception) / 211
3.8.4 小结 / 211
3.8.5 参考资料 / 211
4 C++ 扩展实战初探 / 212
4.1 binding.gyp / 212
4.1.1 惊鸿一瞥 / 213
4.1.2 binding.gyp 基础结构 / 213
4.1.3 GYP 文件 / 214
4.1.4 常用字段 / 221
4.1.5 小结 / 228
4.1.6 参考资料 / 228
4.2 牛刀小试. / 229
4.2.1 又是 Hello World / 229
4.2.2 函数参数 / 232
4.2.3 回调函数 / 234
4.2.4 函数返回 / 238
4.2.5 小结 / 239
4.2.6 参考资料 / 240
4.3 循序渐进 / 240
4.3.1 C++ 与 JavaScript 类封装 / 240
4.3.2 实例化 C++ 类封装对象的函数 / 250
4.3.3 将 C++ 类封装对象传来传去 / 253
4.3.4 进程退出钩子 / 255
4.3.5 小结 / 259
4.3.6 参考资料 / 259
5 Node.js 原生抽象——NAN / 260
5.1 Node.js 原生模块开发方式的变迁 / 260
5.1.1 以不变应万变 / 260
5.1.2 时代在召唤 / 261
5.1.3 小结 / 267
5.1.4 参考资料 / 267
5.2 基础开发 / 267
5.2.1 什么是 NAN / 267
5.2.2 安装和配置 / 269
5.2.3 先睹为快——搭上NAN 的快车 / 270
5.2.4 基础帮助函数和宏 / 276
5.2.5 忽略 node_modules / 279
5.2.6 小结 / 279
5.2.7 参考资料 / 280
XXII Node.js:来一打C++ 扩展
5.3 JavaScript 函数 / 280
5.3.1 函数参数类型 / 280
5.3.2 函数声明 / 282
5.3.3 函数设置 / 288
5.3.4 小结 / 296
5.3.5 参考资料 / 296
5.4 常用帮助类与函数. / 296
5.4.1 句柄相关 / 296
5.4.2 创建数据对象 / 298
5.4.3 与数据对象“玩耍” / 300
5.4.4 封装一个类 / 314
5.4.5 异常处理 / 315
5.4.6 小结 / 315
5.4.7 参考资料 / 316
5.5 NAN 中的异步机制 / 316
5.5.1 Nan::AsyncQueueWorker / 316
5.5.2 Nan::Callback / 317
5.5.3 Nan::AsyncWorker / 317
5.5.4 Nan::AsyncProgressWorker / 323
5.5.5 小结 / 327
5.5.6 参考资料 . / 327
6 异步之旅——libuv / 328
6.1 基础概念 / 329
6.1.1 事件循环 / 330
6.1.2 句柄(Handle)与请求(Request) / 333
6.1.3 尝尝甜头 / 335
6.1.4 小结 / 340
6.1.5 参考资料 / 340
6.2 libuv 的跨线程编程基础 / 341
6.2.1 libuv 的线程 / 342
6.2.2 同步原语(Synchronization Primitive) / 347
6.2.3 工作队列 / 355
6.2.4 小结 / 356
6.2.5 参考资料 / 357
6.3 跨线程通信 / 357
6.3.1 uv_async_t 句柄 / 357
6.3.2 Watchdog 半成品实战解析 / 358
6.3.3 Watchdog 试运行 / 367
6.3.4 小结 / 368
6.3.5 参考资料 / 369
7 实战——文件监视器. / 370
7.1 准备工作 / 370
7.1.1 功能规划 / 370
7.1.2 文件系统监听库——efsw / 373
7.1.3 小结 / 376
7.1.4 参考资料 / 376
7.2 核心设计 / 376
7.2.1 API 设计 . / 377
7.2.2 EFSWCore 的血肉之躯 / 377
7.2.3 EFSWCore 的灵魂 / 381
7.2.4 小结 / 385
7.3 编写JavaScript 类 / 386
7.3.1 类的设计 / 386
7.3.2 核心逻辑 / 388
7.3.3 简单容错 / 391
7.3.4 小结 / 393
7.4 进一步完善 / 393
7.4.1 C++ 代码的完善 / 393
7.4.2 JavaScript 代码的完善 / 398
7.4.3 小结 / 400
8 实战——现有包剖析 / 401
8.1 字符串哈希模块——Bling Hashes / 401
8.1.1 文件设定 / 402
8.1.2 C++ 源码剖析 / 403
8.1.3 JavaScript 源码剖析 / 408
8.1.4 小结 / 409
8.1.5 参考资料 / 410

我来说两句

本书评论

共有 0 条评论
图书分类
我的书库手机端
帮助中心
会员登录 ×
新用户注册 ×