-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Node.js硬實戰:115個核心技巧

( 簡體 字)
作者:承竹等類別:1. -> 程式設計 -> 網路編程 -> Node.js
譯者:
出版社:電子工業出版社Node.js硬實戰:115個核心技巧 3dWoo書號: 45708
詢問書籍請說出此書號!

缺書
NT售價: 550

出版日:1/1/2017
頁數:486
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121304026
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯者序
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旅程的書。在接下來看到的頁面中,AlexYoung和 Mare Harter 會幫助你深刻地把握 Node 的核心模塊、網絡應用等。
網絡應用,是 Node.js 光芒閃耀的地方。親愛的讀者,你可能已經很清楚這一點,我敢說,這就是你購買本書的原因!對于讀了序的這少部分人,讓我來告訴你們,這一切是如何開始的。
在一開始的時候,有一個 C10K 的問題,這個問題是這樣的:如果你要在現代的硬件中處理 10000 個并發連接,你會怎么做?
你可以看到,操作系統處理大量的網絡連接在持續很長一段時間里都是很糟糕的。硬件在很多方面很糟糕,軟件在另外一些方面也很糟糕,當硬件和軟件集成在一起的時候……語言學家暫時還沒有合適的詞語,單純用糟糕來形容對這一切并不公平。幸運的是,技術是一個進步的故事,硬件越來越好,軟件越來越智能。操作系統,如用戶軟件等,在管理大量的網絡連接上有了很大的進步。
在很久以前,我們征服了 C10K 問題,現在目標轉移了,我們已經把眼光投向了 C100K、C500K、C1M 問題。一旦我們輕松地跨越這些界限時,我完全相信,C10M 會是下一個問題。
Node.js 是這個并發性不斷增長的故事的一部分,它的未來是光明的。我們生活在一個日益互聯的世界,這個世界需要一個強大的工具來連接一切。我相信 Node.js 會是那個強大的工具,我希望,在讀完這本書時,你會有同樣的感受。
Ben Noordhuis
StrongLoop公司聯合創始人

前言
當 Node 在 2009 年出現的時候,我們知道有一些東西不一樣了。在服務端 JavaScript 并不是什么新鮮的東西。事實上,服務端的 JavaScript 幾乎和客戶端的 JavaScript 存在的時間一樣長。Node 中,JavaScript 運行時的速度,再加上基于事件的并行,這些很多熟悉JavaScript 程序員都熟悉的東西,確實是讓人感到不可抗拒。不僅僅是像我們這樣背景的客戶端 JavaScript 開發者——Node 吸引了從系統層面到各種服務端開發、PHP、Ruby
或者 Java 的開發者們。我們都可以發現自己身處于這變化中。
在那個時候,Node 有很多變化,我們受困于它,但是在這個過程中也學習了很多東西從一開始,Node 關注于一個小的、低級別的核心庫,來為大量多樣化并且增長的用戶提供足夠的功能。值得慶幸的是,因為早期的一些設計決定,今天大量多樣化的用戶空間還存在著。Node 現在更加穩定,并且在許多初創企業和已成功企業生產環境中使用。
當 Manning 聯系我們來編寫一本中級的、關于 Node 的書時,我們想到了在過去和常見陷阱做斗爭時,以及在 Node 社區中獲得的經驗教訓。盡管我們非常喜歡那些提供給開發人員的大量真正優秀的第三方模塊,但是,我們留意到越來越少的開發人員接觸到Node 核心基礎的教學。所以我們著手編寫了《Node.js 硬實戰》,來以一種深入和徹底的方式,探索 Node 的根源和基礎,并且解決很多我們個人遇見過的,或者看到他人處理過的問題。

關于本書
《Node.js 硬實戰》提供給讀者來深入了解 Node 的核心模塊和包系統。我們相信這是成為一個多產和自信的 Node 開發者的基礎。不幸的是,因為巨大并且充滿活力的第三方生態系統幾乎為所有的任務提供了預置好的模塊,所以小小的核心很容易被錯過。在這本書中,我們在官方文檔的基礎上來進一步實踐和深入。我們想要讀者能夠仔細分析和研究他們編寫的項目以及項目所包含的第三方模塊的內部工作。
這本書不是一本 Node 的入門級別的讀物。入門的話,我們建議閱讀 Manning 的《Node實戰》(Node.js In Action)。這本書的受眾是那些對 Node 有一定經驗,正在尋求更進一步的讀者。建議有一定的 JavaScript 基礎的讀者,最好也熟悉 Windows、OS X 或者 Linux命令行的讀者閱讀。
同時,我們注意到很多 Node 開發者有來自客戶端的 JavaScript 開發背景。因此,我們會花一些時間來解釋一些不大熟悉的概念,如處理二進制數據、底層網絡和文件系統的工作,以及和主機操作系統進行交互——所有這些都使用 Node 來作為教學指南。
章節路線圖
這本書共分為三部分。
第一部分包括了 Node 的核心基礎,我們關注于那些可能用到的 Node 核心模塊(非第三方模塊)。第 1 章簡要概述了 Node 的目的和意義。第 2 到第 8 章每一章內容會深入Node 核心的不同方面,從 Buffers 到流,從網絡到子進程。
第二部分內容關注于真實世界的開發技巧。第 9 到第 12 章的內容,將幫助你掌握 4 種非常實用的技能——測試、Web 開發、調試以及在生產環境運行 Node。除了 Node 核心模塊之外,這些章節的內容也會包括許多第三方模塊的使用。
第三部分將指引你以一種直接的方式來創建自己的 Node 模塊,使用 npm 命令的各種方法來處理打包、運行、測試、基準測試和共享模塊。它同時也包括進行有效的項目版本化的有用提示。
整本書有 115 個技巧,每一部分包括了一個特定的 Node.js 主題或者任務,包括了實際問題、解決方案和討論部分。
內容簡介:

Node.js 是一個持續走熱的供開發人員開發服務器端應用的平臺,但是目前Node.js is的相關實例仍明顯不足,尤其與實踐差距較大。本書匯總了115種Node實踐中的實用技術,書中所有代碼都是經過測試、立即可用且相互關聯的。內容包括基于事件編程、為什么及如何使用閉包、如何利用端到端的JavaScript應用構建自己的應用程序,等等。代碼段注釋豐富,非常便于讀者理解,而精心設計的交叉引用則提示了某一技術與其他技術之間的聯系。

目錄:

第一部分 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
xii 目錄
技巧 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
目錄 xiii
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
xiv 目錄
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
目錄 xv
技巧 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
xvi 目錄
第二部分 實踐中的技巧
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
目錄 xvii
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
xviii 目錄
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
目錄 xix
技巧 113 在不同版本 Node 中測試 448
13.4 發布 451
技巧 114 發布模塊 451
技巧 115 使用私有模塊 453
13.5 總結 455
A 社區................................................................457
序: