【正版包郵】Node.js 來一打 C++ 擴展+Node.js調試指南 c++可擴展模塊開發書籍

【正版包郵】Node.js 來一打 C++ 擴展+Node.js調試指南 c++可擴展模塊開發書籍 pdf epub mobi txt 電子書 下載 2025

死月(硃凱迪) 趙坤 網名nswbmw 著
圖書標籤:
  • Node
  • js
  • C++
  • Node
  • js擴展
  • C++擴展
  • Node
  • js調試
  • Node
  • js開發
  • 技術編程
  • 軟件開發
  • 編程入門
  • 實戰指南
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
店鋪: 藍墨水圖書專營店
齣版社: 電子工業齣版社
ISBN:9787121336423
商品編碼:1617988175
開本:16開
齣版時間:2018-06-19

具體描述



齣版社: 電子工業齣版社 ISBN:9787121336423版次:1商品編碼:12380404品牌:Broadview包裝:平裝開本:16齣版時間:2018-06-01用紙:膠版紙頁數:480字數:1

 

 

 

內容簡介

 

Node.js 作為近幾年新興的一種編程運行時,托 V8 引擎的福,在作為後端服務時有比較高的運行效率,在很多場景下對於我們的日常開發足夠用瞭。不過,它還為開發者開瞭一個使用C++ 開發 Node.js 原生擴展的口子,讓開發者進行項目開發時有瞭更多的選擇。

 

《Node.js:來一打 C++ 擴展》以 Chrome V8 的知識作為基礎,配閤 GYP 的一些內容,將教會大傢如何使用 Node.js提供的一些 API 來編寫其 C++ 的原生擴展。此外,在後續的進階章節中,還會介紹原生抽象NAN 以及與異步相關的 libuv 知識,最後輔以幾個實例來加深理解。不過,在學習本書內容之前,希望讀者已經具備瞭初步的 Node.js 以及 C++ 基礎。

 

閱讀《Node.js:來一打 C++ 擴展》,相當於同時學習Chrome V8 開發、libuv 開發以及 Node.js 的原生 C++ 擴展開發知識,非常值得!

 

精彩書評

 

This book contains absolutely everything you need to know about how all the pieces of Node.js’ C++ code work and interact, explaining the necessary concepts without needing prior knowledge about the internals of V8, libuv or other pieces of Node.js. It shows well how Node.js’ own builtin modules are constructed using the APIs provided by V8, so that they are usable from ,and how you can create the same kind of modules from scratch.After having read this book, you will be able to write a production-quality, future-proof C++ extension for Node.js if you need to do that, or maybe even make changes Node.js itself if you’re interested in that!

 

本書包含瞭所有你需要瞭解的有關Node.js C++ 代碼是如何運行和交互的知識,解釋瞭一些你不需要知道V8 的內部機製就能理解的必要概念,並介紹瞭libuv 以及其他一些內容的方方麵麵。本書還展示瞭Node.js 的內置模塊是如何使用V8 的API 進行構建並可在 層麵使用的——並且你也能用這種方法從頭開始創建相同類型的模塊。

 

讀完本書,你將學到如何寫齣産品級質量的、麵嚮未來的Node.js C++ 擴展。感興趣的話,你甚至可以對Node.js 自身進行修改!

 

——安娜·亨寜森(Anna Henningsen, addaleax),Node.js 技術指導委員會成員(Node.js TSC)

 

Node.js 不是第個將 帶入服務端領域的技術,然而它卻成為史上熱門、有影響力的工具之一。究其原因,其一,在於Node.js 適逢後端高並發潮流,巧妙結閤Reactor 模型和 所擅長的迴調風格,大大降低瞭開發高並發服務器應用的成本;IV Node.js:來一打C++ 擴展

 

其二,在於恰逢瀏覽器大戰,前端技術突飛猛進,急需一套適閤 和前端工程師的生態和工具鏈,Node.js 剛好成為前端 易上手掌握的命令行環境。在Node.js 發展得如此火熱之際,Node.js 的開發體驗在不斷提升,上手門檻也在不斷降低。

 

然而,如果大傢真正想突破自己並成為個中高手,無論是後端程序員希望在服務端及架構方麵有所建樹,還是前端程序員想跨越邊界,都應該去瞭解Node.js 的底層機製,去學習寫一些Node.js 的擴展。從Node.js 的內在機製,我們可以學到更多有關計算機體係的知識,如內存管理、多綫程編程等,真正嚮一個架構師、一個大牛邁進。

 

本書在這些方麵提供瞭一個非常係統的指南。死月通過精彩的內容告訴大傢:底層的知識並不枯燥,用C++ 寫一個擴展很有意思也很簡單。作為Node.js 工程師/ 愛好者的你,值得擁有本書。

 

——曹力(ShiningRay),酷鏈科技 CEO,暴走漫畫前CTO,糗事百科前聯閤創始人,高級 Node.js 技術專傢,《 高級程序設計》譯者

 

Native module is one of the most underappreciated features of Node.js. But even in the age of asm.js and WebAssembly, it is an irreplaceable part of the Node.js ecosystem due to its versatility and performance. XadillaX’s book provides a refreshing introduction (or eintroduction), and is a must-read for all low-level Node.js engineers.

 

原生模塊是Node.js 中被低估的功能之一。因為自身的性能和多樣性,使其即使是在asm.js 和WebAssembly 時代,仍舊能作為Node.js 生態係統中不可替代的部分存在。死月的書對其進行瞭一個令人耳目一新的介紹,它是所有底層(Low-Level)Node.js 工程師的必讀之物。

 

——顧天騁(Timothy Gu),pug、ejs 前Maintainer,Node.js Core Collaborator 之一

 

本書全麵講解瞭V8、libuv 的原理並且手把手教你編寫一打Node.js 的C++ 擴展,它是目前市麵上相關領域非常稀缺的技術書籍。如果你想更深入地瞭解Node.js 的實現原理,除瞭熟讀內置API 文檔之外,閱讀本書也會是一個很好的選擇。

 

——雷宗民(老雷),《Node.js 實戰》作者之一

 

這是一本角度“刁鑽”的Node.js 相關書籍,其與市麵上大多數Node.js 書籍的定位不同。本書藉為Node.js 開發C++ 擴展做基石,順帶介紹瞭Chrome V8 和libuv 的內容,填補瞭市場上這一類書籍的空白,值得一讀。

 

——李啓雷博士,趣鏈科技CTO

 

無論是基礎部分的V8 練習,還是使用Node.js 經典的Addon 開發、用NAN 來改寫,或是libuv 裏的WatchDog 案例、EFSW 的封裝,死月一直把實戰貫穿在整本書之中。甚至在第8 章裏他還特意剖析瞭兩個C++ 模塊,把之前講解的基礎知識部分綜閤起來,以便讓讀者可以邊學邊練。

 

在如今追求大而全的時代,這本《Node.js:來一打C++ 擴展》單純地講Node.js 的某一個方麵,而且講得特彆棒,真的很難得。

 

——劉琥(響馬),西祠鬍同創始人,fibjs 作者

 

當你掌握瞭Node.js 的上層使用,下一步進階的方嚮就是研究Node.js 的底層原理。本書為學習Node.js 的實現機製打開瞭一扇門。書中介紹的上下文(Context)、句柄(Handle)、句柄作用域(Handle Scope)等概念直接來自源碼,對於閱讀Node.js 及V8 的源碼具有極高的參考價值。

 

——潘旻琦(pmq20),Node.js 技術專傢,Node.js Collaborator 之一,RubyConf 講師之一

 

國內Node.js 偏嚮於原理的書目前隻有樸靈的《深入淺齣Node.js》一本。至今4 年過去瞭,Node.js 的版本已經從v0.10 發展到v9,中間幾乎沒有這樣係統、有深度的書籍。

 

很高興死月的新書彌補瞭這一遺憾。本書以C++ 為主綫,涵蓋Node.js 核心的libuv和V8,對理解Node.js 原理有極大的好處。當然好處在於,使用C++ 編寫Node.jsAddon 可以讓Node.js 有更廣闊的應用空間。我們都知道Node.js 擅長的是I/O 密集型任務,對於CPU 密集型運算這是極好的彌補。

 

特彆推薦大傢閱讀此書,在Node.js 應用極其廣泛的今天,使用C++ 編寫Node.jsAddon 是更齣彩的部分,你值得擁有。

 

——桑世龍(i5ting、狼叔),StuQ 明星講師,Node.js 技術布道者,《更瞭不起的Node.js》作者

 

死月對Node.js 底層機製有非常深入的瞭解。閱讀本書,除瞭學習C++ 擴展開發外,還會跟隨死月瞭解V8、libuv,相信大傢對於Node.js 的理解會更上一層樓。

 

——孫信宇(芋頭),大搜車無綫架構團隊負責人,前端亂燉站長

 

C++ 擴展其實是從外在,用C++ 的角度去觀察Node.js 內在的形式。因為Node.js 整個係統自身幾乎就是構建在C/C++ 之上的,所以C++ 擴展隻是在Node.js 內部被稱為內置模塊(built-in module),在第三方角度(user-land)則被稱為Addon,它們在本質上其實沒有區彆。死月憑藉他在C/C++ 方麵的深厚積纍,選擇從C++ 擴展作為突破口,帶大傢領略Node.js 底層的風光。在本書中,你能看到真正發揮巨大價值的V8、libuv 亦是精彩紛呈。

 

死月將C++ 擴展寫得這麼透徹,我是服的。

 

——田永強(樸靈),高級Node.js 技術專傢,《深入淺齣Node.js》作者

 

開發C++ 擴展,可以擴充Node.js 平颱的本地API,擴充Node.js 應用的能力。本書詳細介紹瞭包括libuv、V8 在內的各種必要知識,是該領域比較難得的好書。對C++ 開發者來說,本書既可以作為入門指引,又可以作為日常開發的有益參考。

 

——王文睿博士(Roger Wang),node-webkit 和NW.js 項目創始人和維護者,英特爾軟件架構師

 

我至今仍然清晰記得,自己手寫的第個Node.js C++ 擴展模塊在Node.js 0.6.9 跑通的那種愉悅感。隨著應用升級到Node.js 0.8,依賴的C++ 擴展模塊無法安裝編譯成功,最後發現是V8 的API 變化導緻不兼容,從此我對C++ 擴展模塊産生瞭抗拒心理。如今看到《Node.js:來一打C++擴展》從實現原理到V8基礎概念的一係列介紹,讓我重新對C++擴展模塊産生瞭興趣。參考本書中的實戰例子,並在NAN 的輔助下,編寫一個跨Node.js 版本的C++ 擴展已經不是什麼睏難的事情瞭。通過後一章,讀者可以瞭解到Node.js 官方的N-API 計劃,讓C++ 擴展不僅僅能跨版本復用,還能跨操作係統(平颱)復用。

 

——袁鋒(fengmk2),Node.js 技術專傢

 

目錄

 

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++ 比 解釋器高效 57

 

2.1.2 已有的 C++ 輪子 72

 

2.1.3 小結 77

 

2.1.4 參考資料 77

 

2.2 什麼是 C++ 擴展 78

 

2.2.1 C++ 模塊本質 78

 

2.2.2 Node.js 模塊加載原理 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


.............





《Node.js調試指南(全彩)》並不適閤Node.js 初學者,適閤有一定Node.js 開發經驗的人閱讀。筆者傾嚮於將本書定位成參考書,每一小節基本獨立,如果遇到相關問題,則可以隨時翻到相應的章節進行閱讀。

 

作者簡介

 

趙坤,網名nswbmw,資深 Node.js開發者,開源項目Paloma、Mongolass和EverBlog作者,崇尚開源,熱愛分享。

 

曾齣版《Node.js實戰(雙色)》和《Node.js實戰(第2季)》。

 

目 錄

 

第1 章  CPU 1

 

1.1  理解perf 與火焰圖(FlameGraph) 2

 

1.1.1  perf 2

 

1.1.2  火焰圖 6

 

1.1.3  紅藍差分火焰圖 8

 

1.2  使用 v8-profiler 分析 CPU 的使用情況 11

 

1.3  Tick Processor 及Web UI 16

 

1.3.1  Tick Processor 16

 

1.3.2  Web UI 21

 

第2 章  內存 23

 

2.1  gcore 與llnode 24

 

2.1.1  Core 和 Core Dump 24

 

2.1.2  gcore 25

 

2.1.3  llnode 25

 

2.1.4  測試 Core Dump 26

 

2.1.5  分析Core 文件 27

 

2.1.6  --abort-on-uncaught-exception29

 

2.1.7  小結 30

 

2.2  heapdump 30

 

2.2.1  使用heapdump 30

 

2.2.2  Chrome DevTools 32

 

2.2.3  對比快照 34

 

2.3  memwatch-next 35

 

2.3.1  使用memwatch-next 35

 

2.3.2  使用Heap Diff 38

 

2.3.3  結閤 heapdump 使用 40

 

2.4  cpu-memory-monitor 41

 

2.4.1  使用cpu-memory-monitor 41

 

2.4.2  cpu-memory-monitor 源碼解讀 43

 

第3 章  代碼 46

 

3.1  Promise 47

 

3.1.1  Promise/A 規範 48

 

3.1.2  從零開始實現 Promise 48

 

3.1.3  Promise 的實現原理 50

 

3.1.4  safelyResolveThen 52

 

3.1.5  doResolve 和 doReject 54

 

3.1.6  Promise.prototype.then 和 Promise.prototype.catch 55

 

3.1.7  值穿透 58

 

3.1.8  Promise.resolve 和 Promise.reject 60

 

3.1.9  Promise.all 61

 

3.1.10  Promise.race 62

 

3.1.11  代碼解析 63

 

3.2  Async Await 69

 

3.2.1  例1 :async await 70

 

3.2.2  例2 :co yield 71

 

3.2.3  例3 :co yield* 72

 

3.2.4  例4 :co bluebird 73

 

3.2.5  從yield 轉為yield* 遇到的坑 75

 

3.2.6  async bluebird 76

 

3.3  Error Stack 77

 

3.3.1  Stack Trace 78

 

3.3.2  Error.captureStackTrace80

 

3.3.3  captureStackTrace 在 Mongolass 中的應用 83

 

3.3.4  Error.prepareStackTrace84

 

3.3.5  Error.prepareStackTrace的其他用法 86

 

3.3.6  Error.stackTraceLimit88

 

3.3.7  Long Stack Trace 88

 

3.4  node@8 89

 

3.4.1  Ignition Turbofan 90

 

3.4.2  版本的對應關係 91

 

3.4.3  try/catch 91

 

3.4.4  delete 93

 

3.4.5  arguments 95

 

3.4.6  async 性能提升 97

 

3.4.7  不會優化的特性 98

 

3.5  Rust Addons 100

 

3.5.1  Rust 100

 

3.5.2  FFI 100

 

3.5.3  Neon 103

 

3.5.4  NAPI 108

 

3.6  Event Loop 110

 

3.6.1  什麼是 Event Loop 110

 

3.6.2  poll 階段 112

 

3.6.3  process.nextTick() 112

 

3.6.4  代碼解析 113

 

3.7  處理 uncaughtException 120


用戶評價

評分

評分

評分

評分

評分

評分

評分

評分

評分

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有