注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)Node.js:來(lái)一打 C++ 擴(kuò)展

Node.js:來(lái)一打 C++ 擴(kuò)展

Node.js:來(lái)一打 C++ 擴(kuò)展

定 價(jià):¥109.00

作 者: 死月 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787121336423 出版時(shí)間: 2018-06-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 480 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  Node.js 作為近幾年新興的一種編程運(yùn)行時(shí),托 V8 引擎的福,在作為后端服務(wù)時(shí)有比較高的運(yùn)行效率,在很多場(chǎng)景下對(duì)于我們的日常開(kāi)發(fā)足夠用了。不過(guò),它還為開(kāi)發(fā)者開(kāi)了一個(gè)使用C++ 開(kāi)發(fā) Node.js 原生擴(kuò)展的口子,讓開(kāi)發(fā)者進(jìn)行項(xiàng)目開(kāi)發(fā)時(shí)有了更多的選擇。 《Node.js:來(lái)一打 C++ 擴(kuò)展》以 Chrome V8 的知識(shí)作為基礎(chǔ),配合 GYP 的一些內(nèi)容,將教會(huì)大家如何使用 Node.js提供的一些 API 來(lái)編寫(xiě)其 C++ 的原生擴(kuò)展。此外,在后續(xù)的進(jìn)階章節(jié)中,還會(huì)介紹原生抽象NAN 以及與異步相關(guān)的 libuv 知識(shí),最后輔以幾個(gè)實(shí)例來(lái)加深理解。不過(guò),在學(xué)習(xí)本書(shū)內(nèi)容之前,希望讀者已經(jīng)具備了初步的 Node.js 以及 C++ 基礎(chǔ)。 閱讀《Node.js:來(lái)一打 C++ 擴(kuò)展》,相當(dāng)于同時(shí)學(xué)習(xí)Chrome V8 開(kāi)發(fā)、libuv 開(kāi)發(fā)以及 Node.js 的原生 C++ 擴(kuò)展開(kāi)發(fā)知識(shí),非常值得!

作者簡(jiǎn)介

  朱凱迪,花名“死月”,國(guó)內(nèi)早期 Node.js 開(kāi)發(fā)者之一,現(xiàn)為Node.js Collaborator(核心貢獻(xiàn)者)之一。擅造輪子,包括Node.js的C擴(kuò)展。

圖書(shū)目錄

1 Node.js 的 C++ 擴(kuò)展前驅(qū)知識(shí)儲(chǔ)備 1
1.1 Node.js 的模塊機(jī)制 2
1.1.1 CommonJS 的模塊規(guī)范 2
1.1.2 Node.js 的模塊 4
1.1.3 小結(jié) 9
1.1.4 參考資料 9
1.2 Node.js 的包機(jī)制 9
1.2.1 CommonJS 的包規(guī)范 9
1.2.2 Node.js / NPM 下的包 13
1.2.3 NPM 與 CNPM 16
1.2.4 小結(jié) 19
1.2.5 參考資料 19
1.3 Node.js 依賴簡(jiǎn)介 20
1.3.1 Chrome V8 20
1.3.2 libuv 25
1.3.3 其他依賴 28
1.3.4 小結(jié) 30
1.3.5 參考資料 30
1.4 C++ 擴(kuò)展開(kāi)發(fā)的準(zhǔn)備工作 31
1.4.1 編輯器 / IDE 31
1.4.2 node-gyp 36
1.4.3 其他構(gòu)建工具 54
1.4.4 小結(jié) 56
1.4.5 參考資料 56
2 C++ 模塊原理簡(jiǎn)析 57
2.1 為什么要寫(xiě) C++ 模塊 57
2.1.1 C++ 比 JavaScript 解釋器高效 57
2.1.2 已有的 C++ 輪子 72
2.1.3 小結(jié) 77
2.1.4 參考資料 77
2.2 什么是 C++ 擴(kuò)展 78
2.2.1 C++ 模塊本質(zhì) 78
2.2.2 Node.js 模塊加載原理 80
2.2.3 小結(jié) 102
2.2.4 參考資料 103
3 Chrome V8 基礎(chǔ) 104
3.1 Node.js 與 Chrome V8 104
3.2 基本概念 105
3.2.1 內(nèi)存機(jī)制 105
3.2.2 隔離實(shí)例(Isolate) 108
3.2.3 上下文(Context) 109
3.2.4 腳本(Script) 110
3.2.5 小結(jié) 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 待實(shí)本地句柄(Maybe Local) 119
3.3.5 小結(jié) 121
3.3.6 參考資料 121
3.4 句柄作用域 121
3.4.1 一般句柄作用域(Handle Scope) 122
3.4.2 可逃句柄作用域(Escapable Handle Scope) 125
3.4.3 小結(jié) 129
3.4.4 參考資料 129
3.5 上下文(Context) 129
3.6 模板(Template) 133
3.6.1 函數(shù)模板(Function Template) 133
3.6.2 對(duì)象模板(Object Template) 138
3.6.3 對(duì)象模板的訪問(wèn)器(Accessor)與攔截器(Interceptor) 144
3.6.4 對(duì)象模板的內(nèi)置字段(Internal Field) 175
3.6.5 函數(shù)模板的繼承(Inherit) 183
3.6.6 小結(jié) 188
3.6.7 參考資料 189
3.7 常用數(shù)據(jù)類型 189
3.7.1 基值(Value) 189
3.7.2 字符串(String) 194
3.7.3 數(shù)值類型 196
3.7.4 布爾類型(Boolean) 196
3.7.5 對(duì)象(Object) 196
3.7.6 函數(shù)(Function) 200
3.7.7 數(shù)組(Array) 202
3.7.8 JSON 解析器 203
3.7.9 函數(shù)回調(diào)信息(Function Callback Info) 203
3.7.10 函數(shù)返回值(Return Value) 204
3.7.11 隔離實(shí)例(Isolate) 204
3.7.12 小結(jié) 205
3.7.13 參考資料 206
3.8 異常機(jī)制 206
3.8.1 try-catch 206
3.8.2 拋出異常 209
3.8.3 異常生成類(Exception) 211
3.8.4 小結(jié) 211
3.8.5 參考資料 211
4 C++ 擴(kuò)展實(shí)戰(zhàn)初探 212
4.1 binding.gyp 212
4.1.1 驚鴻一瞥 213
4.1.2 binding.gyp 基礎(chǔ)結(jié)構(gòu) 213
4.1.3 GYP 文件 214
4.1.4 常用字段 221
4.1.5 小結(jié) 228
4.1.6 參考資料 228
4.2 牛刀小試 229
4.2.1 又是 Hello World 229
4.2.2 函數(shù)參數(shù) 232
4.2.3 回調(diào)函數(shù) 234
4.2.4 函數(shù)返回 238
4.2.5 小結(jié) 239
4.2.6 參考資料 240
4.3 循序漸進(jìn) 240
4.3.1 C++ 與 JavaScript 類封裝 240
4.3.2 實(shí)例化 C++ 類封裝對(duì)象的函數(shù) 250
4.3.3 將 C++ 類封裝對(duì)象傳來(lái)傳去 253
4.3.4 進(jìn)程退出鉤子 255
4.3.5 小結(jié) 259
4.3.6 參考資料 259
5 Node.js 原生抽象——NAN 260
5.1 Node.js 原生模塊開(kāi)發(fā)方式的變遷 260
5.1.1 以不變應(yīng)萬(wàn)變 260
5.1.2 時(shí)代在召喚 261
5.1.3 小結(jié) 267
5.1.4 參考資料 267
5.2 基礎(chǔ)開(kāi)發(fā) 267
5.2.1 什么是 NAN 267
5.2.2 安裝和配置 269
5.2.3 先睹為快——搭上NAN 的快車 270
5.2.4 基礎(chǔ)幫助函數(shù)和宏 276
5.2.5 忽略 node_modules 279
5.2.6 小結(jié) 279
5.2.7 參考資料 280
5.3 JavaScript 函數(shù) 280
5.3.1 函數(shù)參數(shù)類型 280
5.3.2 函數(shù)聲明 282
5.3.3 函數(shù)設(shè)置 288
5.3.4 小結(jié) 296
5.3.5 參考資料 296
5.4 常用幫助類與函數(shù) 296
5.4.1 句柄相關(guān) 296
5.4.2 創(chuàng)建數(shù)據(jù)對(duì)象 298
5.4.3 與數(shù)據(jù)對(duì)象“玩?!? 300
5.4.4 封裝一個(gè)類 314
5.4.5 異常處理 315
5.4.6 小結(jié) 315
5.4.7 參考資料 316
5.5 NAN 中的異步機(jī)制 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 小結(jié) 327
5.5.6 參考資料 327
6 異步之旅——libuv 328
6.1 基礎(chǔ)概念 329
6.1.1 事件循環(huán) 330
6.1.2 句柄(Handle)與請(qǐng)求(Request) 333
6.1.3 嘗嘗甜頭 335
6.1.4 小結(jié) 340
6.1.5 參考資料 340
6.2 libuv 的跨線程編程基礎(chǔ) 341
6.2.1 libuv 的線程 342
6.2.2 同步原語(yǔ)(Synchronization Primitive) 347
6.2.3 工作隊(duì)列 355
6.2.4 小結(jié) 356
6.2.5 參考資料 357
6.3 跨線程通信 357
6.3.1 uv_async_t 句柄 357
6.3.2 Watchdog 半成品實(shí)戰(zhàn)解析 358
6.3.3 Watchdog 試運(yùn)行 367
6.3.4 小結(jié) 368
6.3.5 參考資料 369
7 實(shí)戰(zhàn)——文件監(jiān)視器 370
7.1 準(zhǔn)備工作 370
7.1.1 功能規(guī)劃 370
7.1.2 文件系統(tǒng)監(jiān)聽(tīng)?zhēng)臁猠fsw 373
7.1.3 小結(jié) 376
7.1.4 參考資料 376
7.2 核心設(shè)計(jì) 376
7.2.1 API 設(shè)計(jì) 377
7.2.2 EFSWCore 的血肉之軀 377
7.2.3 EFSWCore 的靈魂 381
7.2.4 小結(jié) 385
7.3 編寫(xiě)JavaScript 類 386
7.3.1 類的設(shè)計(jì) 386
7.3.2 核心邏輯 388
7.3.3 簡(jiǎn)單容錯(cuò) 391
7.3.4 小結(jié) 393
7.4 進(jìn)一步完善 393
7.4.1 C++ 代碼的完善 393
7.4.2 JavaScript 代碼的完善 398
7.4.3 小結(jié) 400
8 實(shí)戰(zhàn)——現(xiàn)有包剖析 401
8.1 字符串哈希模塊——Bling Hashes 401
8.1.1 文件設(shè)定 402
8.1.2 C++ 源碼剖析 403
8.1.3 JavaScript 源碼剖析 408
8.1.4 小結(jié) 409
8.1.5 參考資料 410
8.2 類 Proxy 包——Auto Object 410
8.2.1 Proxy 410
8.2.2 Auto Object 使用范例 412
8.2.3 代碼剖析 415
8.2.4 小結(jié) 424
8.2.5 參考資料 424
9 N-API——下一代 Node.js C++ 擴(kuò)展開(kāi)發(fā)方式 425
9.1 淺嘗輒止 426
9.1.1 實(shí)現(xiàn)一個(gè) Echo 函數(shù) 426
9.1.2 嘗試運(yùn)行 N-API 擴(kuò)展 430
9.1.3 向下兼容 431
9.1.4 N-API Package——C++ 封裝 433
9.1.5 小結(jié) 433
9.1.6 參考資料 433
9.2 基本數(shù)據(jù)類型與錯(cuò)誤處理 433
9.2.1 基本數(shù)據(jù)類型 433
9.2.2 與作用域及生命周期相關(guān)的數(shù)據(jù)類型 435
9.2.3 回調(diào)數(shù)據(jù)類型 438
9.2.4 錯(cuò)誤處理 439
9.2.5 模塊注冊(cè) 441
9.2.6 小結(jié) 442
9.2.7 參考資料 442
9.3 對(duì)象與函數(shù) 442
9.3.1 對(duì)象 442
9.3.2 函數(shù) 448
9.3.3 類的封裝 453
9.3.4 小結(jié) 455
9.3.5 參考資料 455

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) www.autoforsalebyowners.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)