了不起的Node.js: 將JavaScript進行到底
了不起的Node.js: 將JavaScript進行到底(Web開發首選,實時,跨多伺服器,高併發)
Guillermo Rauch 編
趙靜 譯
ISBN 978-7-121-21769-2
2014年1月出版
定價:79.00元
320頁
16開
編輯推薦
Node.js是一個由JavaScript書寫而成的強大的web開發框架,它讓開發強壯的、伸縮性良好的服務端web應用變得更加簡單,容易。本書向你展示了什麼是Node以及如何讓你在專案中使用它。本書包含大量實際應用中的示例程式,證明了為什麼Node.js會快速成為web開發首選工具的原因,透過本書,你能夠快速熟悉和掌握達到如下目標所需的Node知識和技能:
瞭解Node基於事件輪詢的架構、無阻塞IO以及事件驅動的程式設計方式
精通Node.js的API
輕鬆實現開發實時應用相關的技術,如SOCKET.IO和HTML5 WEBSOCKETS
編寫能夠支援跨多臺伺服器的高併發應用
透過Node來支援多種資料庫以及資料儲存工具
編寫在單臺伺服器情況下能夠處理萬級併發量的程式
能夠在一個包含更多Node知識和註解示例(含原始碼)的網站上和其他開發者進行實時地溝通交流
本書包含大量全綵插圖和實用的原始碼,絕對是一本革命性web開發工具——Node的實用指南。
內容提要
本書是一本經典的 Learning by Doing的書籍。它由 Node社群著名的 Socket.IO作者—— Guillermo Rauch,透過大量的實踐案例撰寫,並由 Node社群非常活躍的開發者—— Goddy Zhao翻譯而成。
本書內容主要由對五大部分的介紹組成: Node核心設計理念、 Node核心模組 API、Web開發、資料庫以及測試。從前到後、由表及裡地對使用 Node進行 Web開發的每一個環節都進行了深入的講解,並且最大的特點就是透過大量的實際案例、程式碼展示來剖析技術點,講解最佳實踐。
目錄
PART Ⅰ 從安裝與概念開始
CHAPTER 1 安裝............................................... 3
在Windows下安裝............................................... 3
在OS.X下安裝. ................................................ 4
在Linux下安裝................................................. 5
編譯. ............................................................5
確保安裝成功. ...............................................5
Node.REPL................................................. 5
執行檔案.......................................................... 6
NPM................................................................. 6
安裝模組...........................................................7
自定義模組. .......................................................8
安裝二進位制工具包. ..................................................9
瀏覽NPM倉庫. .......................................................9
小結................................................................. 10
CHAPTER 2 JavaScript概覽.........................................11
介紹.......................................................... 11
JavaScript基礎..................................................... 12
型別. ......................................................... 12
型別的困惑. ............................................... 12
函式. .......................................................... 13
THIS、FUNCTION #CALL以及FUNCTION#APPLY.................... 14
函式的引數數量. ........................... 14
閉包. ........................................................ 14
類. .............................................................. 15
繼承. ..................................................... 16
TRY.{}.CATCH.{}...................................... 17
v8中的JavaScript............................... 17
OBJECT#KEYS....................................................... 18
ARRAY#ISARRAY................................................ 18
陣列方法................................................. 18
字串方法.. .................................................... 19
JSON............................................................. 19
FUNCTION#BIND....................................................... 19
FUNCTION#NAME.............................................. 19
_PROTO_(繼承). ............................................ 20
存取器....................................................... 20
小結.............................................................. 21
CHAPTER 3 阻塞與非阻塞IO................................. 23
能力越強,責任就越大................................................. 23
阻塞. ............................................................. 25
單執行緒的世界. ............................................... 27
錯誤處理..................................................... 29
堆疊追蹤................................................ 30
小結............................................................... 32
CHAPTER 4 Node中的JavaScript ..................................... 33
global物件....................................................... 33
實用的全域性物件. ................................................ 34
模組系統............................................................ 34
絕對和相對模組. .................................................. 35
暴露API. ............................................................... 37
事件......................................................... 38
buffer............................................................... 40
小結................................................................... 41
PART Ⅱ Node重要的API
CHAPTER 5 命令列工具(CLI)以及FS API:首個Node應用................... 45
需求................................................. 45
編寫首個Node程式...................................... 46
建立模組.............................................. 46
同步還是非同步. ............................ 47
理解什麼是流(stream)................................... 49
輸入和輸出. .......................................................... 50
重構. ........................................ 53
用fs進行檔案操作. .............................. 55
對CLI一探究竟. ................................................. 56
argv.................................................... 57
工作目錄...................................... 57
環境變數........................................... 58
退出. ............................................... 58
訊號. .......................................................... 58
ANSI轉義碼............................................ 59
對fs一探究竟. ................................................. 59
Stream......................................................... 59
監視. .......................................... 60
小結...................................................... 61
CHAPTER 6 TCP ........................................... 63
TCP有哪些特性. ..................................................... 64
面向連線的通訊和保證順序的傳遞. ........................... 64
面向位元組........................................ 65
可靠性............................................... 65
流控制......................................... 65
擁堵控制.............................................. 65
Telnet................................................................ 65
基於TCP的聊天程式............................................... 68
建立模組..................................... 68
理解NET.SERVER.API........................ 68
接收連線....................................... 70
data事件. ...................................................... 71
狀態以及記錄連線情況. ........................................ 73
圓滿完成此程式. ............................................ 75
一個IRC客戶端程式.......................................... 77
建立模組.............................................. 77
理解NET#STREAM.API.. ......................................... 78
實現部分IRC協議. .................................................. 78
測試實際的IRC伺服器. .................................. 78
小結................................................................. 79
CHAPTER 7 HTTP .................................................. 81
HTTP結構......................................................... 81
頭資訊. ...................................................... 82
連線.............................................................. 87
一個簡單的Web伺服器.................................................. 88
建立模組....................................... 88
輸出表單.................................................... 88
method和URL. ........................................... 90
資料. .............................................. 92
整合. ................................................ 94
讓程式更健壯. ..................................... 95
一個Twitter.Web客戶端......................................... 96
建立模組....................................... 96
傳送一個簡單的HTTP請求. ...................... 97
傳送資料......................................... 98
獲取推文................................................. 99
superagent來拯救.............................................. 102
使用up重啟HTTP伺服器..................................... 103
小結............................................. 104
PART Ⅲ Web開發
CHAPTER 8 Connect .............................. 107
使用HTTP構建一個簡單的網站. ....................................... 108
透過Connect實現一個簡單的網站...................................... 111
中介軟體. ................................................. 112
書寫可重用的中介軟體. .........................114
static中介軟體. .............................................119
query中介軟體. .......................................120
logger中介軟體................................................... 120
body.parser中介軟體. .................................122
cookie.........................................................125
會話(session). ......................................126
Redis.session..................................................131
methodOverride中介軟體. ...........................132
basicAuth中介軟體. ......................................132
小結.............................................................. 134
CHAPTER 9 Express..................................................135
一個小型Express應用. ...................................... 135
建立模組..............................................136
HTML...........................................................136
SETUP..........................................................137
定義路由............................................137
查詢. .................................................140
執行. .....................................................141
設定......................................................... 142
模板引擎...................................................... 143
錯誤處理........................................................ 144
快捷方法................................................. 144
路由................................................ 146
中介軟體. .................................................... 148
程式碼組織策略. ......................................... 149
小結................................................. 151
CHAPTER 10 WebSocket .................. 153
Ajax.............................................. 153
HTML5.WebSocket............................................... 156
一個ECHO示例. ......................................................... 157
初始化專案. .............................................157
建立伺服器. ..................................................158
建立客戶端. ......................................159
執行示例程式. ...................................160
滑鼠游標.......................................... 161
初始化示例程式. .........................................161
建立伺服器. ............................................161
建立客戶端. .....................................164
執行示例程式. .........................................166
面臨一個挑戰. ............................................. 166
關閉並不意味著斷開連線. .............................166
JSON...........................................167
重連. ...................................................167
廣播. ................................................167
WebSocket屬於HTML5:早期瀏覽器不支援. ..........................167
解決方案.................................................167
小結............................................................. 167
CHAPTER 11 Socket.IO.............................................169
傳輸................................................. 170
斷開.VS.關閉. ............................................170
事件. ..........................................170
名稱空間..............................................171
聊天程式................................................. 172
初始化程式. .......................................172
構建伺服器. ..........................................172
構建客戶端. .......................................173
事件和廣播. ........................................175
訊息接收確認. .................................179
一個輪流做DJ的應用................................ 180
擴充套件聊天應用. ...........................................181
整合Grooveshark.API. ...............................182
播放歌曲...............................................185
小結.................................................... 190
PART Ⅳ 資料庫
CHAPTER 12 MongoDB.......................193
安裝.................................................. 195
使用MongoDB:一個使用者認證的例子. .................................. 195
構建應用程式. .......................................195
建立Express.App.. ..............................196
連線MongoDB. ...................................200
建立文件......................................201
查詢文件..................................203
身份驗證中介軟體. ..................................204
校驗.. ..............................................205
原子性..............................................206
安全模式................................206
Mongoose介紹......................................... 206
定義模型........................................207
定義巢狀的鍵. ..........................208
定義巢狀文件. .....................................209
構建索引..........................................209
中介軟體.................................................209
探測模型狀態.. ...............................210
查詢. ..............................................210
擴充套件查詢........................................210
排序.. ........................................211
選擇. ......................................................211
限制.. .....................................211
跳過. .........................................211
自動產生鍵. ...............................211
轉換. ..............................................212
一個使用Mongoose的例子........................................ 212
構建應用.................................212
重構. ..............................213
建立模型.................................213
小結.......................................... 215
CHAPTER 13 MySQL...........................................217
node-mysql........................................ 217
初始化專案. .......................................217
Express應用. ...................................218
連線MySQL. .....................................219
初始化指令碼. .......................................220
建立資料................................................224
獲取資料.....................................228
sequelize............................................ 229
初始化sequelize. ................................230
初始化Express應用. ....................................230
連線sequelize. .........................233
定義模型和同步. ........................... 234
建立資料.................................236
獲取資料......................................238
刪除資料..............................239
完整地完成應用. ...............................240
小結.......................................... 241
CHAPTER 14 Redis......................................... 243
安裝Redis............................................... 244
Redis查詢語言. ............................................... 245
資料型別............................................. 245
字串. ...................................246
雜湊. .................................................246
列表. ......................................... 248
資料集. .....................................249
有序資料集. .........................................249
Redis和Node. .......................................... 249
使用node-redis實現一個社交圖譜. .............250
小結......................................... 259
PART Ⅴ 測試
CHAPTER 15 程式碼共享 ................................. 263
什麼樣的程式碼可以共享........................................... 263
書寫相容的JavaScript程式碼................................ 264
匯出模組......................................................264
模擬實現ECMA.API. ................................265
模擬實現Node.API. ......................................267
模擬實現瀏覽器端API. ...............................267
跨瀏覽器的繼承實現. ...........................268
整合到一起:browserbuild. ...................... 268
基礎案例....................................269
小結......................................... 271
CHAPTER 16 測試................................... 273
簡單測試........................................ 273
測試目標............................................. 274
測試策略................................... 274
測試程式...................................................275
expect.js................................................. 276
API一覽. .........................................276
Mocha................................................. 278
測試非同步程式碼. ..................................279
BDD風格. ................................281
TDD風格. .......................................281
export風格. .................................282
在瀏覽器端使用Mocha. ...................................282
小結.................................... 284
索引 ...................................... 285
作者簡介
Guillermo Rauch(舊金山,加利福尼亞州)是一家位於舊金山,為
當地教育提供相關服務的創業公司LearnBoost的CTO和聯合創始人。
Rauch還是幾個知名Node.js專案的發明者,曾在JSConf和一些
Node.js workshop做過演講。"
譯者介紹:
Goddy Zhao(本名趙靜),Successfactors(SAP子公司)軟體工程師。畢業於復旦大學,先後在IBM、淘寶工作過,專注於企業級富客戶端Web應用的開發,擅長前後端相結合的技術解決方案。曾與人合譯過多本前端圖書,並曾在滬JS及D2前端技術論壇擔任過主持人和演講嘉賓。個人主頁http://goddyzhao.me。
媒體評論
本書寫作精良 ——Amazon.com讀者Shawn Rapp
本書直指要點,且無無用廢話,可謂字字珠璣——Amazon.com讀者Pragmateek
本書定位精確,用大量簡單但魯棒性強的模式幫助初學者走上用Node.js建立更復雜應用之路。這種簡明扼要的寫法很招人喜歡,面向教學做得很成功,是一本有效使用Node.js的參考書。——Amazon.com讀者Pmjtoca
前言
絕大部分 Web應用都包含客戶端和伺服器端兩部分。伺服器端的實現往往比較複雜、麻煩。建立一個簡單的伺服器都要求對多執行緒、伸縮性以及伺服器部署有專業的技術知識。除此之外,由於客戶端軟體是用 HTML和JavaScript來實現的,而伺服器端核心程式碼通常都是用靜態程式語言實現的,所以,開發 Web應用經常會有錯亂的感覺。由於這種前後端開發語言的差異,不得不讓開發者使用多種程式語言,同時還要對特定的程式邏輯事先做好設計選型。
幾年前,要用 JavaScript來實現服務端軟體幾乎是想都不敢想的一件事情。糟糕的效能、不成熟的記憶體管理以及缺乏作業系統層面的整合,不解決這些問題, JavaScript很難成為一門伺服器端的語言。作為 Google Chrome瀏覽器的一部分,新的 V8引擎能夠解決前兩個問題。 V8是一個開源的專案,透過簡單的 API就可以將其整合進去。
Ryan Dahl洞察到了這樣一個機會,可以透過將 V8內嵌到作業系統的整合層,來讓 JavaScript享受到底層作業系統的非同步介面,從而實現將其帶到伺服器端的目的。這就是 Node.js的設計思路。這麼做的好處是顯而易見的。程式設計師們可以在客戶端和伺服器端使用同樣的程式語言了。 JavaScript動態語言的特性使得開發和試驗伺服器端程式碼變得很自由,使得程式設計師們擺脫了傳統那種又慢又重的程式設計模式。
Node.js迅速躥紅,衍生了一個強大的開源社群、支援企業,甚至還擁有屬於自己的技術大會。我把這種成功歸結於它的簡潔,高效,同時提高了程式設計生產力。我很高興 V8成為其一小部分。
本書將帶著讀者學習如何基於 Node.js為Web應用構建伺服器端部分,同時還會帶著大家學習如何組織伺服器端非同步程式碼以及如何與資料庫進行互動。
好好享受這本書帶來的樂趣吧!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13164110/viewspace-1061612/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 將ERP理念資料化進行到底(轉)
- 未被定義的 “智慧座艙”,如何將產業化進行到底產業
- 運用CRM系統將銷售管理進行到底
- 專訪IBM:誓將業務分析進行到底薦IBM
- 將RedHat 7.0的漢化進行到底 Unicon 3.0 中文顯示 (轉)Redhat
- 將開源進行到底:Facebook引爆下輪開源浪潮
- 封神SLG《朝歌》,誓將“降肝降氪”進行到底
- 使用node.js 進行伺服器端JavaScript程式設計Node.js伺服器JavaScript程式設計
- Java19將成為非常了不起的Java版本?Java
- 堅持發揚EJB、Spring的光輝思想,將元件化進行到底!Spring元件化
- 共創開源攜海龍電腦城將正版進行到底(轉)
- 大咖說·圖書分享|了不起的JavaScript工程師:從前端到全端高階進階JavaScript工程師前端
- 徠卡釋出沒螢幕的M10-D相機 將極簡進行到底
- 窺見AI工業化開發黎明:華為雲如何將AI進行到底AI
- 將雲原生進行到底:騰訊百萬級別容器雲平臺實踐揭秘
- 將雲端計算普及進行到底,阿里雲推出“免費套餐”計劃阿里
- 了不起的 “filter(NULL IS NOT NULL)”FilterNull
- 從被阿里關閉的 Quixey 到 Aiqudo :用語音技術將深度連結「進行到底」阿里UIAI
- 華為雲打造雲原生基礎設施新正規化,將“創新普惠”進行到底
- 擁抱開源,浪潮將OpenStack之路踐行到底!
- 微軟推行的永久在家工作,是否能進行到底?微軟
- [譯] Node.js 能進行 HTTP/2 推送啦!Node.jsHTTP
- Node.js 對圖片進行裁切、縮放Node.js
- javascript實現的將小數轉換為整數不進行四捨五入JavaScript
- node.js相比JavaScriptNode.jsJavaScript
- 在 Node.js 中看 JavaScript 的引用Node.jsJavaScript
- JavaScript與WebAssembly進行比較JavaScriptWeb
- 到底啥是JavaScript MockJavaScriptMock
- JavaScript 到底有多慢?JavaScript
- 《Node.js設計模式》使用流進行編碼Node.js設計模式
- 使用 Dynatrace 對 Node.js 應用的效能資料進行分析Node.js
- JavaScript table表格行進行刪除和新增JavaScript
- 【Bun1.0】超越 Node.js:Bun.js 帶你進入 JavaScript 的新時代Node.jsJavaScript
- 將腔調與設計進行到底——脈歌掛脖式藍芽耳機TX-90評測藍芽
- 如何實現報表滾動到底部進行翻頁的效果
- 漢語是最了不起的語言
- 使用 JavaScript 進行單詞發音JavaScript
- 在vscode中對Node.js進行debugVSCodeNode.js