出版時間:2012-4 出版社:人民郵電出版社 作者:[美] David Herron 譯者:鄢學(xué)鵾,吳天豪,廖 健
Tag標(biāo)簽:無
前言
歡迎光臨Node(也叫Node.js)開發(fā)的世界。Node是一種新興的軟件開發(fā)平臺,它將JavaScript從Web瀏覽器移植到常規(guī)的服務(wù)器端。Node運(yùn)行在Chrome的高速V8引擎上,并附帶了一個快速、健壯的異步網(wǎng)絡(luò)I/O組件庫。Node主要用于構(gòu)建高性能、高可擴(kuò)展的服務(wù)器和客戶端應(yīng)用,以實(shí)現(xiàn)真正“實(shí)時的Web應(yīng)用”?!? 在經(jīng)過數(shù)年嘗試用Ruby和其他語言實(shí)現(xiàn)Web服務(wù)器組件之后,Ryan Dahl在2009年開發(fā)了Node平臺。這個探索使他從使用傳統(tǒng)的、基于線程的并發(fā)模型轉(zhuǎn)向使用事件驅(qū)動的異步系統(tǒng),因?yàn)楹笳吒唵危ǘ嗑€程系統(tǒng)以難于開發(fā)著稱),系統(tǒng)開銷更低(與對每個連接維護(hù)一個線程相比),因而能提高相應(yīng)的速度。Node旨在提供一個“創(chuàng)建可擴(kuò)展網(wǎng)絡(luò)服務(wù)器的簡單方式”。這個設(shè)計受到了Event Machine(Ruby)和Twisted框架(Python)的影響,并和它們有些類似。 本書致力于講述如何用Node構(gòu)建Web應(yīng)用。我們會在書中介紹快速學(xué)習(xí)Node時一些必需的重要概念。本書會教你編寫真正的應(yīng)用,剖析其工作原理,并討論如何在程序中應(yīng)用這些理念。我們需要安裝Node和npm,學(xué)習(xí)安裝和開發(fā)npm包及Node模塊。此外,我們還會開發(fā)一些應(yīng)用,度量長時間運(yùn)行的計算在Node的事件循環(huán)中的響應(yīng)能力,介紹將高負(fù)載的工作分派到多個服務(wù)器的方法,并介紹Express框架?!? 本書內(nèi)容 第1章“Node入門”,介紹了Node平臺。這一章講述了Node的用途、技術(shù)構(gòu)架上的選擇、Node的歷史和服務(wù)器端JavaScript的歷史,然后介紹為什么JavaScript仍將受困于瀏覽器?!? 第2章“安裝并配置Node”,介紹如何配置Node開發(fā)環(huán)境,包括多種從源碼編譯和安裝的場景,還會簡單介紹在開發(fā)環(huán)境中如何部署Node。 第3章“Node模塊”,解釋了作為開發(fā)Node應(yīng)用基本單位的模塊。我們會全面介紹并開發(fā)Node模塊。然后進(jìn)一步介紹Node包管理器npm,給出一些使用npm管理已安裝包的例子,還將涉及開發(fā)npm包并將其發(fā)布出來供他人使用。 第4章“幾種典型的簡單應(yīng)用”,在讀者已經(jīng)有一些Node基礎(chǔ)知識后,開始探索Node應(yīng)用的開發(fā)。我們會分別使用Node、Connect中間件框架和Express應(yīng)用框架開發(fā)一個簡單的應(yīng)用。雖然應(yīng)用比較簡單,但是我們可以通過其開發(fā)探索Node的事件循環(huán),處理長時間的運(yùn)算,了解異步和同步算法以及如何將繁重的計算交給后臺服務(wù)器?!? 第5章“簡單的Web服務(wù)器、EventEmitter和HTTP客戶端”,介紹了Node里的HTTP客戶端和服務(wù)器對象。我們會在開發(fā)HTTP服務(wù)器和客戶端應(yīng)用的同時全面深入介紹HTTP會話?!? 第6章“存取數(shù)據(jù)”,探討大部分應(yīng)用都需要的長期可靠的數(shù)據(jù)存儲機(jī)制。我們會用SQL和MongoDB數(shù)據(jù)庫引擎實(shí)現(xiàn)一個應(yīng)用。在此期間,我們將用Express框架實(shí)現(xiàn)用戶驗(yàn)證,更好地展示出錯頁面。 閱讀要求 目前,我們一般會采用源碼的方式安裝Node,這種方式可以很好地用在類Unix和符合POSIX標(biāo)準(zhǔn)的系統(tǒng)上。當(dāng)然,在接觸Node之前,謙遜的心態(tài)是必需的,但最為重要的事情還是讓大腦供血充足?!? 從源碼安裝的方式需要一個類Unix或類POSIX系統(tǒng)(比如Linux、Mac、FreeBSD、OpenSolaris等)、新的C/C++編譯器、OpenSSL庫和Python 2.4或更新版本。 Node程序可以用任何文本編輯器來寫,不過一個能處理JavaScript、HTML、CSS等的文本編輯器會更有幫助?!? 盡管本書介紹的是Web應(yīng)用開發(fā),但你并不需要擁有一個Web服務(wù)器。Node有自己的Web服務(wù)器套件?!? 讀者對象 本書寫給所有想在一個新的軟件平臺上開拓新編程模式的軟件工程師?!? 服務(wù)器端程序員或許能看到一些新奇的概念,對Web應(yīng)用開發(fā)產(chǎn)生新的理解。JavaScript是一門強(qiáng)大的語言,Node的異步特性發(fā)揮了JavaScript的優(yōu)勢?!? 瀏覽器端JavaScript“攻城師”或許會覺得在Node中使用JavaScript和編寫與DOM操作無關(guān)的JavaScript代碼很有趣。(Node平臺上沒有瀏覽器,所以也沒有DOM,除非你安裝JSDom。) 雖然本書各章內(nèi)容由淺入深,循序漸進(jìn),但到底如何閱讀本書悉聽尊便?!? 本書需要讀者知道如何編寫軟件,并且對JavaScript等編程語言有所了解。 排版約定 在本書中,讀者會發(fā)現(xiàn)不同的文本樣式。下面是這些樣式的示例和說明。 正文中的代碼使用特殊字體:“http對象封裝HTTP協(xié)議,它的http.createServer方法會創(chuàng)建一個完整的Web服務(wù)器,而.listen方法用于監(jiān)聽特定的端口。” 代碼塊是這樣的: var http = require(‘http’); http.createServer(function (req, res) { res.writeHead(200, {‘Content-Type’: ‘text/plain’}); res.end(‘Hello World\n’); }).listen(8124, ““127.0.0.1”“); console.log(‘Server running at http://127.0.0.1:8124/’); 代碼塊中會加粗突出顯示代碼,這表示需要讀者格外注意: var util = require(‘util’); var A = ““a different value A”“; var B = ““a different value B”“; var m1 = require(‘./module1’); util.log(‘A=’+A+‘ B=’+B+‘ values=’+util.inspect(m1.values())); 命令行的輸入輸出是這樣的: $ sudo /usr/sbin/update-rc.d node defaults 新術(shù)語及重要詞匯都會加粗顯示。你將在屏幕上看到的文字,比如菜單或?qū)υ捒蛑械奈淖郑瑫@樣在正文中提到:“一個真正安全的系統(tǒng)至少會有用戶名和密碼輸入框。不過,我們這里就直接讓用戶單擊Login按鈕了。” 讀者反饋 我們始終歡迎來自讀者的反饋意見。我們想知道讀者對本書的看法,讀者喜歡哪些內(nèi)容或不喜歡哪些內(nèi)容。讀者真正深有感觸的反饋,對于我們開發(fā)圖書產(chǎn)品至關(guān)重要?!? 一般的反饋可以發(fā)郵件到feedback@packtpub.com,但請在郵件標(biāo)題中注明相關(guān)書名。 如果有關(guān)于新書的建議,你可以登錄www.packtpub.com,填寫SUGGEST A TITLE表單或者向suggest@packtpub.com發(fā)送郵件?!? 如果你在某個領(lǐng)域積累了豐富的經(jīng)驗(yàn),想寫一本書,或者愿意與人合著或?qū)徯D潮緯堥喿xwww.packtpub.com/authors上的作者指南。 讀者服務(wù) 現(xiàn)在你已是Packt引以為榮的讀者了,因此我們特別要交待幾件事,以保障你作為讀者的最大權(quán)益。 下載示例代碼 在www.packtpub.com通過自己的賬號購買圖書的讀者,可以下載所有已購買圖書的代碼 。如果這本書是你在其他地方購買的,訪問www.packtpub.com/support并注冊,我們將通過電子郵件將相關(guān)文件發(fā)送給你?!? 勘誤 雖然我們會全力確保本書內(nèi)容的準(zhǔn)確性,但錯誤仍在所難免。如果你發(fā)現(xiàn)了本書中的錯誤(包括文字和代碼錯誤),而且愿意向我們提交這些錯誤,我們會十分感激。這樣一來,不僅可以減少其他讀者的疑慮,也有助于本書后續(xù)版本的改進(jìn)。要提交錯誤,請訪問www. packtpub.com/support,選擇相關(guān)圖書,單擊errata submission form鏈接,然后輸入勘誤信息。經(jīng)過驗(yàn)證后,你提交的勘誤信息就會添加到已有的勘誤列表中。要查看已有的勘誤信息,請訪問www.packtpub.com/support并選擇相關(guān)圖書?!? 反盜版聲明 網(wǎng)上各種形式的盜版是一直存在的問題。Packt非常重視版權(quán)和許可證的保護(hù)。如果你在網(wǎng)上遇到以任何形式非法復(fù)制的我方作品,請盡快告知我們相關(guān)的地址或網(wǎng)站名稱,以便我們采取補(bǔ)救措施。 請把郵件發(fā)送到copyright@packtpub.com,并在郵件里注明涉嫌侵權(quán)資料的鏈接?!? 感謝你幫助我們保護(hù)作者和我們?yōu)槟銕碛袃r值內(nèi)容的能力。 疑難解答 如果對本書的某些方面有疑問,請將電子郵件發(fā)送到questions@packtpub.com,我們會盡力解決?!?
內(nèi)容概要
作為服務(wù)器端的JavaScript解釋器,Node是一個輕量高效的開發(fā)平臺,用于構(gòu)建響應(yīng)快速、高度可擴(kuò)展的Web應(yīng)用。它使用事件驅(qū)動和非阻塞的I/O模型,非常適合開發(fā)數(shù)據(jù)密集、對實(shí)時響應(yīng)要求高的分布式應(yīng)用,在微軟、eBay、LinkedIn、雅虎等世界知名公司均有成功的應(yīng)用。
本書是Node開發(fā)基礎(chǔ)教程,通過大量示例介紹如何使用HTTP服務(wù)器和客戶端對象、Connect和Express應(yīng)用框架、異步執(zhí)行算法,以及如何結(jié)合使用SQL和MongoDB數(shù)據(jù)庫。另外,本書同時針對開發(fā)和部署環(huán)境給出了實(shí)用的Node安裝建議,介紹了HTTP服務(wù)器和客戶端應(yīng)用的開發(fā),闡述了很多Node使用方式,包括在應(yīng)用中使用數(shù)據(jù)庫存儲引擎,以及在有無Connect/Express
Web應(yīng)用框架的情況下開發(fā)網(wǎng)站的方法。本書還介紹了Node的CommonJS模塊系統(tǒng),幫助開發(fā)人員實(shí)現(xiàn)一些重要的面向?qū)ο笤O(shè)計方案。
本書適合具有一定JavaScript和Web應(yīng)用開發(fā)基礎(chǔ)知識、打算使用服務(wù)器端JavaScript開發(fā)高性能Web應(yīng)用的開發(fā)人員閱讀。
本書內(nèi)容包括:
服務(wù)器端JavaScript對于Web應(yīng)用開發(fā)的作用
使用Node時,針對性能和吞吐量作出成熟的架構(gòu)選擇?
為開發(fā)和部署服務(wù)器端Web應(yīng)用安裝和使用Node
Connect和Express應(yīng)用框架的使用?
在應(yīng)用中設(shè)置SQL或MongoDB數(shù)據(jù)庫系統(tǒng)
區(qū)分并評估同步算法和異步算法?
作者簡介
David Herron
軟件開發(fā)人員和軟件質(zhì)量工程師,在硅谷從業(yè)20多年,目前在雅虎擔(dān)任質(zhì)量工程小組的架構(gòu)師,管控公司基于Node開發(fā)的Web應(yīng)用平臺的質(zhì)量。
他曾為Sun公司主管工程師,并作為Java
SE質(zhì)量工程小組的架構(gòu)師負(fù)責(zé)開發(fā)自動化測試工具(包括現(xiàn)在廣泛用于GUI自動測試軟件的AWT
Robot類),期間參與了OpenJDK和JDK-Distros項(xiàng)目的啟動,舉辦了世界性的Mustang
Regressions大賽,讓Java開發(fā)者社區(qū)尋找Java 1.6的bug。
任職Sun公司之前,他曾為VXtreme公司開發(fā)視頻流處理工具(Windows Media
Player的前身),在Wollongong集團(tuán)從事電子郵件客戶端和服務(wù)器軟件的開發(fā),加入了互聯(lián)網(wǎng)工程任務(wù)組,負(fù)責(zé)改進(jìn)與電子郵件相關(guān)的協(xié)議。
鄢學(xué)鵾
阿里云云手機(jī)開發(fā)者運(yùn)營負(fù)責(zé)人,曾在網(wǎng)易做過UI設(shè)計師,在雅虎中國領(lǐng)導(dǎo)過前端團(tuán)隊(duì),在口碑網(wǎng)領(lǐng)導(dǎo)過UED團(tuán)隊(duì),還擔(dān)任D2前端技術(shù)論壇顧問。對Web標(biāo)準(zhǔn)、前端開發(fā)模式、性能優(yōu)化和自動化有較深入的研究。目前專注于從Mobile到PC領(lǐng)域的設(shè)計、技術(shù)和業(yè)務(wù)間的結(jié)合,常用ID:秦歌、三七。其譯著有《JavaScript語言精粹》和《高性能網(wǎng)站建設(shè)進(jìn)階指南:Web開發(fā)者性能優(yōu)化最佳實(shí)踐》,個人博客是dancewithnet.com,Twitter賬號是@
kavenyan。
吳天豪
阿里云計算前端開發(fā)工程師,w3ctech杭州站負(fù)責(zé)人,w3ctech.com內(nèi)容貢獻(xiàn)者,負(fù)責(zé)過口碑網(wǎng)產(chǎn)品線的開發(fā)、基于移動瀏覽器的Web
App開發(fā),致力于構(gòu)建快速、高效、可訪問性高的Web應(yīng)用。
廖健
阿里云資深前端開發(fā)工程師,有多年Flash平臺開發(fā)經(jīng)驗(yàn),喜歡奔放的腳本語言,曾在D2論壇和HTML5研究小組線下沙龍做過技術(shù)分享,目前主要研究和實(shí)踐Web技術(shù)在移動平臺上的應(yīng)用。
書籍目錄
第1章 Node入門
1.1 Node能做什么
1.2 為什么要使用Node
1.2.1 架構(gòu)問題:線程,還是異步事件驅(qū)動
1.2.2 性能和利用率
1.2.3 服務(wù)器利用率、成本和綠色Web托管服務(wù)
1.3 Node、Node.js還是Node .JS
1.4 小結(jié)
第2章 安裝并配置Node
2.1 系統(tǒng)要求
2.2 在符合POSIX標(biāo)準(zhǔn)的系統(tǒng)上安裝
2.3 在Mac OS X上安裝開發(fā)者工具
2.3.1 在home目錄下安裝
2.3.2 在系統(tǒng)級目錄下安裝Node
2.3.3 在Mac OS X上使用MacPorts安裝
2.3.4 在Mac OS X上使用homebrew安裝
2.3.5 在Linux上使用軟件包管理系統(tǒng)安裝
2.3.6 同時安裝并維護(hù)多個Node
2.4 驗(yàn)證安裝成功與否
2.4.1 Node命令行工具
2.4.2 用Node運(yùn)行簡單的腳本
2.4.3 用Node啟動服務(wù)器
2.5 安裝npm——Node包管理器
2.6 系統(tǒng)啟動時自動啟動Node服務(wù)器
2.7 小結(jié)
第3章 Node模塊
3.1 什么是模塊
3.1.1 Node模塊
3.1.2 Node解析require ('module')的方式
3.2 Node包管理器
3.2.1 npm包的格式
3.2.2 查找npm包
3.2.3 使用npm命令
3.2.4 Node包版本的標(biāo)識和范圍
3.2.5 CommonJS模塊
3.3 小結(jié)
第4章 幾種典型的簡單應(yīng)用
4.1 Math Wizard
4.2 不依賴框架的實(shí)現(xiàn)
4.2.1 路由請求
4.2.2 處理URL查詢參數(shù)
4.2.3 乘法運(yùn)算
4.2.4 其他數(shù)學(xué)函數(shù)的執(zhí)行
4.2.5 擴(kuò)展Math Wizard
4.2.6 長時間運(yùn)行的運(yùn)算(斐波那契數(shù))
4.2.7 還缺什么功能
4.2.8 使用Connect框架實(shí)現(xiàn)Math Wizard
4.2.9 安裝和設(shè)置Connect
4.2.10 使用Connect
4.3 使用Express框架實(shí)現(xiàn)Math Wizard
4.3.1 準(zhǔn)備工作
4.3.2 處理錯誤
4.3.3 參數(shù)化的URL和數(shù)據(jù)服務(wù)
4.4 小結(jié)
第5章 簡單的Web服務(wù)器、EventEmitter和HTTP客戶端
5.1 通過EventEmitter發(fā)送和接收事件
5.2 HTTP Sniffer——監(jiān)聽HTTP會話
5.3 基本的Web服務(wù)器
5.4 MIME類型和MIME npm包
5.5 處理cookie
5.6 虛擬主機(jī)和請求路由
5.7 發(fā)送HTTP客戶端請求
5.8 小結(jié)
第6章 存取數(shù)據(jù)
6.1 Node的數(shù)據(jù)存儲引擎
6.2 SQLite3——輕量級的進(jìn)程內(nèi)SQL引擎
6.2.1 安裝SQLite
6.2.2 用SQLite3實(shí)現(xiàn)便簽應(yīng)用
6.2.3 在Node中使用其他SQL數(shù)據(jù)庫
6.3 Mongoose
6.3.1 安裝Mongoose
6.3.2 用Mongoose實(shí)現(xiàn)便簽應(yīng)用
6.3.3 對MongoDB數(shù)據(jù)庫的其他支持
6.4 如何實(shí)現(xiàn)用戶驗(yàn)證
6.5 小結(jié)
編輯推薦
用Node平臺打造高性能Web應(yīng)用 雅虎架構(gòu)師精準(zhǔn)解讀最炙手可熱的Web開發(fā)技術(shù) 從基礎(chǔ)到實(shí)踐,示例豐富
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載