發表於2024-11-05
一本讓你真正學會|用好Node高級技術的進階讀物
本書精心組織115 個已通過測試的例子,並細緻剖析保障這些Node應用良好運行的實用技術;采用提齣問題/解決問題模式,囊括基於事件的編程、流、集成外部應用和發布等重要話題。
■ 從基礎到進階的常見使用例子
■ 設計和編寫模塊
■ 測試和調試 Node 應用
■ Node 和現有的係統集成
《Node.js 硬實戰:115 個核心技巧》是一本麵嚮實戰的Node.js 開發進階指南。作為資深專傢,《Node.js 硬實戰:115 個核心技巧》作者獨闢蹊徑,將著眼點放在Node.js 的核心模塊和網絡應用,通過精心組織的豐富實例,嚮讀者充分展示瞭Node.js 強大的並發處理能力,讀者從中可真正掌握Node 的核心基礎與高級技巧。《Node.js 硬實戰:115 個核心技巧》總共有三部分內容,第一部分是Node.js 的基礎核心,涉及Buffer、流、網絡和進程等相關知識;第二部分是項目實踐,涉及測試、Web 開發、調試,生産環境等重要話題;第三部分則完整創建瞭一個Node.js 模塊。每部分涉及的技術都有詳細講解及注釋詳盡的示例代碼,以幫助讀者們更好地理解要點及其應用。
《Node.js 硬實戰:115 個核心技巧》適閤有一定JavaScript 基礎,追求在Node.js 上更進一步的開發者。
承竹,前支付寶前端開發工程師,現唯品會高級開發工程師。愛摺騰,對計算機世界充滿好奇,喜歡 JavaScript 語言,緻力於成為一個理想中的靠譜軟件工程師。徐佶輝,花名慕陶,08年開始工作,現任螞蟻金服前端開發。在翻譯《Node.js硬實戰》這本書的過程中學到瞭很多,也深深發現這是本介紹node不可多得的好書。
Marc Harter 緻力於構建大型項目,包括高可用的實時應用、流式接口和其他數據密集型係統。
Young 是一位經驗豐富的 JavaScript 開發者,定期在 DailyJS 博客發錶文章。
第一部分Node 基礎
1 入門. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Node 入門3
1.1.1 為什麼使用Node 3
1.1.2 Node 的主要特性5
1.2 構建一個Node 應用7
1.2.1 創建一個新的Node 項目8
1.2.2 創建一個流的類9
1.2.3 使用流10
1.2.4 編寫測試11
1.3 總結13
2 全局變量:Node 環境. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1 模塊16
技巧1 安裝與加載模塊16
技巧2 創建與管理模塊17
技巧3 加載一組相關的模塊20
技巧4 使用路徑22
2.2 標準I/O 以及console 對象23
技巧5 標準I/O 流的讀寫24
技巧6 打印日誌消息25
技巧7 基準測試27
2.3 操作係統與命令行29
技巧8 獲取平颱信息29
技巧9 傳遞命令行參數30
技巧10 退齣程序31
技巧11 響應信號量33
2.4 使用timer 延遲執行35
技巧12 通過setTimeout 延遲執行函數35
技巧13 通過定時器定時調用迴調函數37
技巧14 安全的操作異步接口38
2.5 總結41
3 Buffers:使用比特、字節以及編碼. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1 修改數據編碼44
技巧15 Buffer 轉換為其他格式44
技巧16 使用Buffers 來修改字符串編碼46
3.2 二進製文件轉換為JSON 49
技巧17 使用Buffer 來轉換原始數據49
3.3 創建你自己的二進製協議65
技巧18 創建自己的網絡協議65
3.4 總結71
4 Events:玩轉EventEmitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.1 基礎用法73
技巧19 從EventEmitter 繼承73
技巧20 混閤EventEmitter 76
4.2 異常處理78
技巧21 管理異常78
技巧22 通過domains 管理異常80
4.3 高級模式82
技巧23 反射82
技巧24 探索EventEmitter 85
技巧25 組織事件名稱87
4.4 第三方模塊以及擴展88
技巧26 EventEmitter 的替代方案89
4.5 總結91
5 流:最強大和最容易誤解的功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.1 流的介紹94
5.1.1 流的類型94
5.1.2 什麼時候使用流94
5.1.3 曆史95
5.1.4 第三方模塊中的流96
5.1.5 流繼承事件97
5.2 內置流98
技巧27 使用內置的流來實現靜態web 服務器98
技巧28 流的錯誤處理101
5.3 第三方模塊和流102
技巧29 使用流的第三方模塊102
5.4 使用流基類105
技巧30 正確地從流的基類繼承105
技巧31 實現一個可讀流107
技巧32 實現一個可寫流111
技巧33 使用雙工流轉換和接收數據113
技巧34 使用轉換流解析數據114
5.5 高級模式和優化118
技巧35 流的優化118
技巧36 使用老的流API 121
技巧37 基於功能的流適配123
技巧38 測試流125
5.6 總結128
6 文件係統:通過異步和同步的方法處理文件. . . . . . . . . . . . . . . . . . . . . . . . . 129
6.1 fs 模塊概述130
6.1.1 POSIX 文件係統包裝器130
6.1.2 流132
6.1.3 批量文件操作133
6.1.4 文件監視133
6.1.5 同步的替代方案133
技巧39 讀取配置文件134
技巧40 使用文件描述136
技巧41 使用文件鎖137
技巧42 遞歸文件操作142
技巧43 編寫文件數據庫147
技巧44 監視文件以及文件夾151
6.2 總結154
7 網絡:Node 真正的“Hello, World” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
7.1 Node 中的網絡156
7.1.1 網絡技術157
7.1.2 Node 網絡模塊161
7.1.3 非阻塞網絡和綫程池162
7.2 TCP 客戶端和服務端163
技巧45 創建TCP 服務端和客戶端163
技巧46 使用客戶端測試TCP 服務端165
技巧47 改進實時性低的應用168
7.3 UDP 客戶端和服務端170
技巧48 通過UDP 傳輸文件170
技巧49 UDP 客戶端服務應用174
7.4 HTTP 客戶端和服務端179
技巧50 HTTP 服務器179
技巧51 重定嚮181
技巧52 HTTP 代理186
7.5 創建DNS 請求189
技巧53 創建DNS 請求189
7.6 加密191
技巧54 一個加密的TCP 服務器192
技巧55 加密的Web 服務器和客戶端196
7.7 總結198
8 子進程:利用Node 整閤外部應用程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
8.1 執行外部應用程序202
技巧56 執行外部應用程序202
8.1.1 路徑和Path 的環境變量203
8.1.2 執行外部程序時候齣現的異常204
技巧57 流和外部應用程序205
8.1.3 外部應用程序的串聯調用206
技巧58 在shell 中執行命令208
8.1.4 安全性和shell 命令執行209
技巧59 分離子進程210
8.1.5 父進程和子進程之間的I/O 處理211
8.1.6 引用計數和子進程213
8.2 執行Node 程序213
技巧60 執行Node 程序214
技巧61 Forking Node 模塊216
技巧62 運行作業218
8.2.1 工作池220
8.2.2 使用池模塊222
8.3 同步運行223
技巧63 同步子進程223
8.4 總結227
第二部分實踐中的技巧
9 網絡:構建精簡的網絡應用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
9.1 前端技術231
技巧64 快速的靜態網站服務器231
技巧65 在Node 中使用DOM 236
技巧66 在瀏覽器端使用Node 模塊238
9.2 服務端技術241
技巧67 Express 路由分離241
技巧68 自動重啓服務器245
技巧69 配置web 應用248
技巧70 優雅地處理錯誤253
技巧71 RESTful web 應用257
技巧72 使用自定義的中間件267
技巧73 使用事件進行解耦273
技巧74 使用WebSockets 來處理sessions 276
技巧75 升級Express 3 到4 281
9.3 web 應用程序的測試285
技巧76 測試路由286
技巧77 為中間件注入創建seams 288
技巧78 測試依賴遠程服務的應用291
9.4 全棧框架297
9.5 實時服務299
9.6 總結300
10 測試:編寫健壯代碼的關鍵. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
10.1 Node 測試的相關介紹303
10.2 使用斷言編寫簡單的測試304
技巧79 用內置的模塊編寫測試305
技巧80 編寫驗證異常的測試308
技巧81 創建自定義的斷言312
10.3 測試裝置314
技巧82 使用一個測試裝置組織測試314
10.4 測試框架318
技巧83 使用Mocha 編寫測試319
技巧84 使用Mocha 測試web 應用323
技巧85 萬能測試協議(TAP) 328
10.5 測試工具331
技巧86 持續集成331
技巧87 數據庫裝置335
10.6 擴展閱讀343
10.7 總結343
11 調試:用於發現和解決問題. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
11.1 內省345
11.1.1 顯式異常345
11.1.2 隱藏的異常346
11.1.3 錯誤事件346
11.1.4 錯誤參數347
技巧88 處理未捕獲的異常348
技巧89 檢查我們的Node 代碼351
11.2 問題的調試352
技巧90 使用Node 內置的調試器352
技巧91 使用Node Inspector 359
技巧92 對Node 應用進行性能分析361
技巧93 內存泄漏的調試365
技巧94 使用REPL 來檢測運行中的程序370
技巧95 跟蹤係統調用377
11.3 總結381
12 生産環境中的Node:安全地部署應用程序. . . . . . . . . . . . . . . . . . . . . . . . . . 382
12.1 部署383
技巧96 將Node 程序部署到雲端383
技巧97 使用Apache 和Ngnix 部署Node 程序389
技巧98 在80 端口上安全地運行Node 程序392
技巧99 保持Node 進程一直運行394
技巧100 在生産環境中使用WebSockets 396
12.2 Node 程序的緩存和擴展性402
技巧101 HTTP 緩存402
技巧102 為程序的路由和擴展使用Node 代理404
技巧103 使用集群保持程序的擴展性和彈性408
12.3 維護413
技巧104 包的優化413
技巧105 日誌和日誌服務415
12.4 更多關於Node 程序的擴展性和彈性的備注418
12.5 總結419
第三部分編寫模塊
13 編寫模塊,掌握Node 的所有. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
13.1 頭腦風暴424
13.1.1 更快的斐波那契模塊424
技巧106 計劃編寫我們的模塊425
技巧107 驗證我們模塊的想法427
13.2 創建package.json 文件433
技巧108 創建package.json 文件433
技巧109 依賴處理436
技巧110 語義化版本號441
13.3 用戶體驗444
技巧111 添加可執行腳本444
技巧112 在本地測試模塊446
技巧113 在不同版本Node 中測試448
13.4 發布451
技巧114 發布模塊451
技巧115 使用私有模塊453
13.5 總結455
A 社區. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
譯者序
JavaScript 從它誕生以來就在瀏覽器應用中發揮著愈來愈重要的作用,同時,熱愛JavaScript的人們一直在努力地將其應用在服務器領域。2009 年,Ryan Dahl 帶來瞭Node.js,從那個時候開始,JavaScript 社區齣現瞭前所未有的繁榮。現在,Node.js 對開發者來說,幾乎已經是傢喻戶曉的瞭。對於傳統的服務器端開發者們而言,Node.js 帶來瞭瀏覽器端使用已久的異步編程相關的概念,而對於前端開發者們來說,Node.js 則是帶來瞭編寫服務端程序方麵的挑戰。當我們這些對Node.js 一知半解的開發者野心勃勃想要徵服Node.js時,我們需要一個經驗滿滿的導師來指引我們前行。
我很幸運地有這樣一個機會接觸到這本書,並且承擔起翻譯的任務。我第一次閱讀原著時就感覺,它是一本可以勝任Node.js 導師這個角色的書籍。作者認真負責地介紹瞭Node.js 相關的方方麵麵,並且附帶瞭相當詳細的例子來幫助讀者快速地理解其中的要點。我相信,對於想要學習Node.js 的開發者來說,本書會是一個相當好的選擇。翻譯書的過程,也是一個學習的過程,原諒我們水平有限,書中翻譯內容難免有疏漏。
當這本書差不多翻譯完成的時候,我發現已經用瞭好長的時間,Node.js 技術更新得相當快,我相信小部分內容的細節上和現在的應用可能會齣現些許差異,還請讀者們諒解。
最後,在此對支持本書翻譯工作的所有人們錶示感謝,尤其是耐心容忍我們一再推遲交稿的編輯,真的非常感謝。
衷心希望本書能夠對您有所幫助,請享受Node.js 給您帶來的一切,謝謝。
序
在你手中的是一本將帶你進入瞭解Node 旅程的書。在接下來看到的頁麵中,Alex Young和Mare Harter 會幫助你深刻地把握Node 的核心模塊、網絡應用等。
網絡應用,是Node.js 光芒閃耀的地方。親愛的讀者,你可能已經很清楚這一點,我敢說,這就是你購買本書的原因!對於讀瞭序的這少部分人,讓我來告訴你們,這一切是如何開始的。
在一開始的時候,有一個C10K 的問題,這個問題是這樣的:如果你要在現代的硬件中處理10000 個並發連接,你會怎麼做?
你可以看到,操作係統處理大量的網絡連接在持續很長一段時間裏都是很糟糕的。硬件在很多方麵很糟糕,軟件在另外一些方麵也很糟糕,當硬件和軟件集成在一起的時候……語言學傢暫時還沒有閤適的詞語,單純用糟糕來形容對這一切並不公平。幸運的是,技術是一個進步的故事,硬件越來越好,軟件越來越智能。操作係統,如用戶軟件等,在管理大量的網絡連接上有瞭很大的進步。
在很久以前,我們徵服瞭C10K 問題,現在目標轉移瞭,我們已經把眼光投嚮瞭 Node.js硬實戰:115個核心技巧 下載 mobi epub pdf txt 電子書 格式
Node.js硬實戰:115個核心技巧 下載 mobi pdf epub txt 電子書 格式 2024
Node.js硬實戰:115個核心技巧 下載 mobi epub pdf 電子書還可以!
評分node強大!學習起來!
評分還可以!
評分翻瞭幾頁網絡部分的內容,我就想問一下譯者,這是用百度翻譯譯的麼?現在google翻譯還算強大,好歹翻個牆撒……
評分京東快遞還是不錯的,東西還沒用,不清楚,就是感覺快遞給力,所以買京東的
評分還不錯!從中獲得瞭不少知識,進階js
評分老公的要的書 好像所有幫助 太貴啦
評分每滿100減50的時候買的,書可以,一星是給京東的,活動那天107,活動過後89,坑爹
評分挺好的
Node.js硬實戰:115個核心技巧 mobi epub pdf txt 電子書 格式下載 2024