出版時(shí)間:2013-4 出版社:人民郵電出版社 作者:奧爾波
Tag標(biāo)簽:無
內(nèi)容概要
Node.js是一套用來編寫高性能網(wǎng)絡(luò)服務(wù)器的JavaScript工具包,從2009年誕生之日起,就獲得了業(yè)內(nèi)專家和技術(shù)社區(qū)的強(qiáng)烈關(guān)注。而《Node.js入門經(jīng)典》采用直觀、循序漸進(jìn)的方法對(duì)如何使用Node.js來開發(fā)及具速度和可擴(kuò)展性優(yōu)勢(shì)的服務(wù)器端應(yīng)用程序進(jìn)行了講解。
《Node.js入門經(jīng)典》分為6部分,第1部分介紹了Node.js的基本概念和特性;第2部分講解如何借助HTTP模塊和Express Web框架,使用Node.js創(chuàng)建基本的網(wǎng)站;第3部分介紹了調(diào)試和測(cè)試Node.js應(yīng)用程序的工具,以及部署Node.js應(yīng)用的方法;第4部分講解了Node.js實(shí)現(xiàn)實(shí)時(shí)編程的能力以及Socket.IO;第5部分介紹了Node.js API以及構(gòu)建Node.js應(yīng)用程序所使用的組件;第6部分則介紹了CoffeeScript這款JavaScript預(yù)編譯器的知識(shí),以及如何在Node.js中使用中間件、Backbone.js來創(chuàng)建單頁面應(yīng)用的知識(shí)。
作者簡介
George Ornbo是英國的一位JavaScript和Ruby開發(fā)人員。他開發(fā)Web應(yīng)用程序已有8年時(shí)間,一開始是以自由職業(yè)者的身份工作,最近則為倫敦的pebble {code}工作。他的博客地址是http://shapeshed.com,在網(wǎng)絡(luò)中大多數(shù)常見的地方,他都以@shapeshed出現(xiàn)。
書籍目錄
第1部分 入門 第1章 Node.js介紹 2 1.1 什么是Node.js 2 1.2 使用Node.js能做什么 3 1.3 安裝并創(chuàng)建第一個(gè)Node.js程序 3 1.3.1 驗(yàn)證Node.js正確安裝 4 1.3.2 創(chuàng)建“HelloWorld”Node.js程序 4 1.4 小結(jié) 5 1.5 問與答 6 1.6 測(cè)驗(yàn) 6 1.6.1 問題 6 1.6.2 答案 7 1.7 練習(xí) 7 第2章 npm(Node包管理器) 8 2.1 npm是什么 8 2.2 安裝npm 9 2.3 安裝模塊 9 2.4 使用模塊 10 2.5 如何找模塊 11 2.5.1 官方來源 11 2.5.2 非官方來源 12 2.6 本地和全局的安裝 13 2.6.1 本地安裝 13 2.6.2 全局安裝 13 2.7 如何找模塊文檔 14 2.8 使用package.json指定依賴關(guān)系(dependency) 14 2.9 小結(jié) 16 2.10 問與答 16 2.11 測(cè)驗(yàn) 16 2.11.1 問題 16 2.11.2 答案 17 2.12 練習(xí) 17 第3章 Node.js的作用 18 3.1 設(shè)計(jì)Node.js的目的 18 3.2 理解I/O 19 3.3 處理輸入 19 3.4 聯(lián)網(wǎng)的I/O是不可預(yù)測(cè)的 22 3.5 人類是不可預(yù)測(cè)的 24 3.6 處理不可預(yù)測(cè)性 25 3.7 小結(jié) 26 3.8 問與答 26 3.9 測(cè)驗(yàn) 27 3.9.1 問題 27 3.9.2 答案 27 3.10 練習(xí) 27 第4章 回調(diào)(Callback) 29 4.1 什么是回調(diào) 29 4.2 剖析回調(diào) 33 4.3 Node.js如何使用回調(diào) 34 4.4 同步和異步代碼 36 4.5 事件循環(huán) 39 4.6 小結(jié) 39 4.7 問與答 39 4.8 測(cè)驗(yàn) 40 4.8.1 問題 40 4.8.2 答案 40 4.9 練習(xí) 40 第2部分 使用Node.js的基本網(wǎng)站 第5章 HTTP 44 5.1 什么是HTTP 44 5.2 使用Node.js的HTTP服務(wù)器 44 5.2.1 一個(gè)基礎(chǔ)的服務(wù)器 44 5.2.2 加入頭(Header) 45 5.2.3 檢查響應(yīng)頭 46 5.2.4 Node.js中的重定向 49 5.2.5 響應(yīng)不同的請(qǐng)求 50 5.3 使用Node.js的HTTP客戶端 52 5.4 小結(jié) 53 5.5 問與答 53 5.6 測(cè)驗(yàn) 54 5.6.1 問題 54 5.6.2 答案 54 5.7 練習(xí) 54 第6章 Express介紹 55 6.1 什么是Express 55 6.2 為什么使用Express 55 6.3 安裝Express 56 6.4 創(chuàng)建一個(gè)基礎(chǔ)的Express站點(diǎn) 56 6.5 探索Express 58 6.5.1 app.js 58 6.5.2 node_modules 58 6.5.3 package.json 58 6.5.4 public 58 6.5.5 routes 58 6.5.6 views 58 6.6 介紹Jade 59 6.6.1 使用Jade定義頁面結(jié)構(gòu) 60 6.6.2 使用Jade輸出數(shù)據(jù) 62 6.7 小結(jié) 68 6.8 問與答 68 6.9 測(cè)驗(yàn) 68 6.9.1 問題 69 6.9.2 答案 69 6.10 練習(xí) 69 第7章 深入Express 70 7.1 Web應(yīng)用程序中的路由 70 7.2 在Express中路由如何工作 70 7.3 添加GET路由 71 7.4 添加POST路由 72 7.5 在路由中使用參數(shù) 73 7.6 讓路由保持可維護(hù)性 74 7.7 視圖渲染 75 7.8 使用本地變量 76 7.9 小結(jié) 78 7.10 問與答 78 7.11 測(cè)驗(yàn) 78 7.11.1 問題 79 7.11.2 答案 79 7.12 練習(xí) 79 第8章 數(shù)據(jù)的持久化 80 8.1 什么是持久的數(shù)據(jù) 80 8.2 將數(shù)據(jù)寫入文件 81 8.3 從文件讀取數(shù)據(jù) 82 8.4 讀取環(huán)境變量 83 8.5 使用數(shù)據(jù)庫 84 8.5.1 關(guān)系數(shù)據(jù)庫 84 8.5.2 NoSQL數(shù)據(jù)庫 85 8.6 在Node.js中使用MongoDB 85 8.6.1 安裝MongoDB 86 8.6.2 連接MongoDB 87 8.6.3 定義文檔 89 8.6.4 將TwitterBootstrap包含進(jìn)來 90 8.6.5 索引(Index)視圖 91 8.6.6 創(chuàng)建(Create)視圖 93 8.6.7 編輯視圖 95 8.6.8 刪除任務(wù) 98 8.6.9 添加閃出消息 99 8.6.10 驗(yàn)證輸入的數(shù)據(jù) 101 8.7 小結(jié) 102 8.8 問與答 103 8.9 測(cè)驗(yàn) 103 8.9.1 問題 103 8.9.2 答案 103 8.10 練習(xí) 104 第3部分 調(diào)試、測(cè)試與部署 第9章 調(diào)試Node.js應(yīng)用程序 106 9.1 調(diào)試 106 9.2 STDIO模塊 107 9.3 Node.js調(diào)試器 111 9.4 NodeInspector 113 9.5 關(guān)于測(cè)試的注釋 116 9.6 小結(jié) 116 9.7 問與答 116 9.8 測(cè)驗(yàn) 117 9.8.1 問題 117 9.8.2 答案 117 9.9 練習(xí) 117 第10章 測(cè)試Node.js應(yīng)用程序 119 10.1 為什么測(cè)試 119 10.2 Assert(斷言)模塊 120 10.3 第三方測(cè)試工具 122 10.4 行為驅(qū)動(dòng)的開發(fā)(BehaviorDrivenDevelopment) 125 10.4.1 Vows 125 10.4.2 Mocha 128 10.5 小結(jié) 131 10.6 問與答 131 10.7 測(cè)驗(yàn) 132 10.7.1 問題 132 10.7.2 答案 132 10.8 練習(xí) 132 第11章 部署Node.js應(yīng)用程序 133 11.1 準(zhǔn)備好部署 133 11.2 在云上托管 133 11.3 Heroku 135 11.3.1 注冊(cè)Heroku 135 11.3.2 為Heroku準(zhǔn)備應(yīng)用程序 136 11.3.3 將應(yīng)用程序部署到Heroku 137 11.4 CloudFoundry 138 11.4.1 注冊(cè)CloudFoundry 138 11.4.2 為CloudFoundry準(zhǔn)備應(yīng)用程序 139 11.4.3 將應(yīng)用程序部署到CloudFoundry 140 11.5 Nodester 141 11.5.1 注冊(cè)Nodester 141 11.5.2 為Nodester準(zhǔn)備應(yīng)用程序 142 11.5.3 將應(yīng)用程序部署到Nodester 143 11.6 其他PaaS提供商 144 11.7 小結(jié) 144 11.8 問與答 144 11.9 測(cè)驗(yàn) 145 11.9.1 測(cè)驗(yàn) 145 11.9.2 答案 145 11.10 練習(xí) 145 第4部分 使用Node.js的中間站點(diǎn) 第12章 介紹Socket.IO 148 12.1 現(xiàn)在要開始學(xué)習(xí)一些完全不同的技術(shù)了 148 12.2 動(dòng)態(tài)Web簡史 148 12.3 Socket.IO 149 12.4 基礎(chǔ)的Socket.IO示例 150 12.5 從服務(wù)器發(fā)送數(shù)據(jù)到客戶端 152 12.6 將數(shù)據(jù)廣播給客戶端 156 12.7 雙向數(shù)據(jù) 160 12.8 小結(jié) 163 12.9 問與答 163 12.10 測(cè)驗(yàn) 164 12.10.1 問題 164 12.10.2 答案 164 12.11 練習(xí) 165 第13章 一個(gè)Socket.IO聊天服務(wù)器 166 13.1 Express和Socket.IO 166 13.2 添加昵稱 168 13.2.1 將昵稱發(fā)送給服務(wù)器 169 13.2.2 管理昵稱列表 171 13.2.3 使用回調(diào)來驗(yàn)證 174 13.2.4 廣播昵稱列表 178 13.2.5 添加消息收發(fā)功能 179 13.3 小結(jié) 183 13.4 問與答 184 13.5 測(cè)驗(yàn) 184 13.5.1 問題 184 13.5.2 答案 184 13.6 練習(xí) 185 第14章 一個(gè)流Twitter客戶端 186 14.1 流API 186 14.2 注冊(cè)Twitter 187 14.3 和Node.js一起使用Twitter的API 189 14.4 從數(shù)據(jù)中挖掘含義 191 14.5 將數(shù)據(jù)推送到瀏覽器 194 14.6 創(chuàng)建一個(gè)實(shí)時(shí)的愛恨表 197 14.7 小結(jié) 206 14.8 問與答 206 14.9 測(cè)驗(yàn) 206 14.9.1 問題 206 14.9.2 答案 206 14.10 練習(xí) 207 第15章 JSONAPI 208 15.1 API 208 15.2 JSON 209 15.3 使用Node.js發(fā)送JSON數(shù)據(jù) 211 15.4 從JavaScript對(duì)象創(chuàng)建JSON 212 15.5 使用Node.js消費(fèi)JSON數(shù)據(jù) 213 15.6 使用Node.js創(chuàng)建JSONAPI 216 15.6.1 在Express中以JSON發(fā)送數(shù)據(jù) 216 15.6.2 構(gòu)建應(yīng)用程序 219 15.7 小結(jié) 224 15.8 問與答 225 15.9 測(cè)驗(yàn) 225 15.9.1 問題 225 15.9.2 答案 225 15.10 練習(xí) 226 第5部分 探索Node.jsAPI 第16章 進(jìn)程模塊 228 16.1 進(jìn)程是什么 228 16.2 退出進(jìn)程以及進(jìn)程中的錯(cuò)誤 230 16.3 進(jìn)程與信號(hào) 230 16.4 向進(jìn)程發(fā)送信號(hào) 231 16.5 使用Node.js創(chuàng)建腳本 233 16.6 給腳本傳遞參數(shù) 234 16.7 小結(jié) 236 16.8 問與答 236 16.9 測(cè)驗(yàn) 237 16.9.1 問題 237 16.9.2 答案 237 16.10 練習(xí) 238 第17章 子進(jìn)程模塊 239 17.1 什么是子進(jìn)程 239 17.2 殺死子進(jìn)程 241 17.3 與子進(jìn)程通信 242 17.4 集群(Cluster)模塊 244 17.5 小結(jié) 246 17.6 問與答 246 17.7 測(cè)驗(yàn) 246 17.7.1 問題 246 17.7.2 答案 246 17.8 練習(xí) 247 第18章 事件模塊 248 18.1 理解事件 248 18.2 通過HTTP演示事件 251 18.3 用事件玩乒乓 254 18.4 動(dòng)態(tài)編寫事件偵聽器程序 255 18.5 小結(jié) 258 18.6 問與答 258 18.7 測(cè)驗(yàn) 259 18.7.1 問題 259 18.7.2 答案 259 18.8 練習(xí) 259 第19章 緩沖區(qū)模塊 260 19.1 二進(jìn)制數(shù)據(jù)初步 260 19.2 從二進(jìn)制到文本 261 19.3 二進(jìn)制和Node.js 262 19.4 Node.js中的緩沖區(qū)是什么? 264 19.5 寫入緩沖區(qū) 265 19.6 向緩沖區(qū)追加數(shù)據(jù) 266 19.7 復(fù)制緩沖區(qū) 267 19.8 修改緩沖區(qū)中的字符串 267 19.9 小結(jié) 268 19.10 問與答 268 19.11 測(cè)驗(yàn) 268 19.11.1 問題 268 19.11.2 答案 269 19.12 練習(xí) 269 第20章 流模塊 270 20.1 流簡介 270 20.2 可讀流 272 20.3 可寫流 275 20.4 通過管道連接流 276 20.5 流的MP3 277 20.6 小結(jié) 278 20.7 問與答 278 20.8 測(cè)驗(yàn) 279 20.8.1 問題 279 20.8.2 答案 279 20.9 練習(xí) 279 第6部分 進(jìn)一步的Node.js開發(fā) 第21章 CoffeeScript 282 21.1 什么是CoffeeScript 282 21.2 安裝與運(yùn)行CoffeeScript 284 21.3 為什么要使用預(yù)編譯器 285 21.4 CoffeeScript的功能 286 21.4.1 最小語法 286 21.4.2 條件和比較 287 21.4.3 循環(huán) 288 21.4.4 字符串 289 21.4.5 對(duì)象 290 21.4.6 類、繼承和super 291 21.5 調(diào)試CoffeeScript 294 21.6 對(duì)CoffeeScript的反應(yīng) 294 21.7 小結(jié) 295 21.8 問與答 295 21.9 測(cè)驗(yàn) 296 21.9.1 問題 296 21.9.2 答案 296 21.10 練習(xí) 296 第22章 創(chuàng)建Node.js模塊 298 22.1 為什么創(chuàng)建模塊 298 22.2 流行的Node.js模塊 298 22.3 package.json文件 299 22.4 文件夾結(jié)構(gòu) 301 22.5 開發(fā)和測(cè)試模塊 302 22.6 添加可執(zhí)行文件 304 22.7 使用面向?qū)ο蠡蛘呋谠偷木幊?305 22.8 通過GitHub共享代碼 306 22.9 使用TravisCI 307 22.10 發(fā)布到npm 309 22.11 公開模塊 310 22.12 小結(jié) 310 22.13 問與答 310 22.14 測(cè)驗(yàn) 311 22.14.1 問題 311 22.14.2 答案 311 22.15 練習(xí) 311 第23章 使用Connect創(chuàng)建中間件 312 23.1 什么是中間件 312 23.2 Connect中的中間件 313 23.3 使用中間件的訪問控制 317 23.4 按IP地址限制訪問 319 23.5 將用戶強(qiáng)制到單個(gè)域上 321322 23.6 小結(jié) 323324 23.7 問與答 324 23.8 測(cè)驗(yàn) 324 23.8.1 問題 324 23.8.2 答案 324325 23.9 練習(xí) 324325 第24章 結(jié)合使用Backbone.js與Node.js 326 24.1 什么是Backbone.js 326 24.2 Backbone.js如何工作 327 24.3 一個(gè)簡單的Backbone.js視圖 332 24.4 使用Backbone.js創(chuàng)建記錄 336 24.5 小結(jié) 337 24.6 問與答 337 24.7 測(cè)驗(yàn) 338 24.7.1 問題 338 24.7.2 答案 338 24.8 練習(xí) 338
章節(jié)摘錄
版權(quán)頁: 插圖: 對(duì)于那些從Python和Ruby這樣的語言切換過來的人而言,CoffeeScript大體上是受歡迎的。語法相似,無需花費(fèi)許多年來學(xué)習(xí)JavaScript所有的怪癖。CoffeeScript用一套熟悉的語法做了所有的重活,輸出的是一個(gè)經(jīng)過策劃的JavaScript版本,避免落入許多常見的編程陷阱。 對(duì)于那些編程經(jīng)驗(yàn)不多的人而言,CoffeeScript可能不流行。它是令人發(fā)指的軟件工具清單中的另外一個(gè)需要學(xué)習(xí)的東西。尤其對(duì)于那些通過jQuery對(duì)JavaScript有些經(jīng)驗(yàn)的人,編譯到JavaScript的額外步驟會(huì)是慢吞吞并且不必要的。 對(duì)于有經(jīng)驗(yàn)的JavaScript程序員而言,什么反應(yīng)都有。這些程序員花費(fèi)了許多年的時(shí)間來理解錯(cuò)綜復(fù)雜的JavaScript并花費(fèi)數(shù)小時(shí)時(shí)間來完成痛苦的調(diào)試工作!雖然CoffeeScript會(huì)避免許多常見的JavaScript問題,但它輸出的是帶有自己的看法的JavaScript,可能并不與有經(jīng)驗(yàn)的JavaScript開發(fā)人員的風(fēng)格一致。此外,有些人將CoffeeScript看作是不相干的編譯,如果他們已經(jīng)是技術(shù)高超的JavaScfipt開發(fā)人員的話。它經(jīng)常被看作是用來幫助經(jīng)驗(yàn)不足的開發(fā)人員的玩具。 除了調(diào)試更復(fù)雜以外,大家還認(rèn)為用CoffeeScript編寫Nodeo.js項(xiàng)目的話,和其他開發(fā)人員共事會(huì)難得多。使用CoffeeScript,就假定項(xiàng)目中的其他所有人都理解CoffeeScript并且預(yù)編譯JavaScript。大家的指責(zé)是這樣的:CoffeeScript給想要在項(xiàng)目上協(xié)同工作的人添加了另一道障礙。 JavaScript的創(chuàng)建者Brendan Eich在他的網(wǎng)站上寫了如下文字(http://brendaneich.com/2011/01/harmony—of—my—dreams/): CoffeeScript做得不錯(cuò),要比JS更方便,只要你對(duì)Python式的有意義的空格和從另外一個(gè)源語言生成JS帶來的開銷買賬。 這是一個(gè)生動(dòng)的引述。CoffeeScript要比JavaScript更方便,但其代價(jià)就是要學(xué)習(xí)一種新語法并且需要額外的編譯步驟。 21.7小結(jié) 在本章,我們了解了CoffeeScript這一JavaScfipt的預(yù)編譯器。我們了解到可以在Node.js項(xiàng)目中使用它,并且檢查了諸如語法、循環(huán)、對(duì)象和類這樣的功能。我們了解了使用CoffeeScript與編寫原生JavaScript之間的優(yōu)缺點(diǎn)。我們了解了CoffeeScript所能提供的生產(chǎn)力提升、調(diào)試和協(xié)作上的問題以及CoffeeScript如何繞開JavaScnpt編程語言中更為困難的那些部分。 21.8問與答 問:別當(dāng)騎墻派了!我到底該不該用CoffeeScript? 答:我還是騎墻吧!簡而言之就是要看情況。要看你的JavaScript技藝水平如何,是否與其他知道CoffeeScript的開發(fā)人員一起協(xié)作,以及是否喜歡CoffeeScript。CoffeeScript當(dāng)然可以帶來許多方便,但它也不是沒有潛在的問題。
編輯推薦
《Node.js入門經(jīng)典》內(nèi)容循序漸進(jìn)、深入淺出、步驟詳盡,而且附有大量適合動(dòng)手實(shí)踐的示例,可幫助讀者在最短的時(shí)間內(nèi)掌握Node.js。本書適合對(duì)Node.js感興趣的零基礎(chǔ)人員閱讀,也適合對(duì)Web前端開發(fā)、后端開發(fā)感興趣的技術(shù)人員閱讀。讀者可通過http://vdisk.weibo.com/s/s7fmW下載《Node.js入門經(jīng)典》的所有源代碼。
名人推薦
這是一本絕佳的Node.js圖書,她涵蓋了Node.js平臺(tái)的所有方面,并通過案例式教學(xué)來幫助讀者理解、掌握Node.js的使用?!狝ndrew Nesbitt, Forward Internet Group開發(fā)人員
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載