出版時間:2012-7 出版社:人民郵電出版社 作者:郭家寶(BYVoid) 頁數(shù):178 字數(shù):249000
Tag標簽:無
前言
這本書講了什么 本書是一本 Node.js 的入門教程,寫給想了解 Node.js 的開發(fā)人員。我的目標是使讀者通過閱讀本書,學會使用 Node.js 進行 Web 后端開發(fā),同時能熟悉事件驅動的異步式編程風格,以便進一步了解 Node.js 的許多高級特性,以及它所應用的更多領域?! ”緯?章,分別討論了 Node.js的背景、安裝和配置方法、基本特性、核心模塊以及一些進階話題。除此之外,還有2個附錄,分別介紹了JavaScript 的高級特性和 Node.js 編程規(guī)范。下面簡要概述各章的主要內容。 第1章“Node.js 簡介” 這一章概述了什么是Node.js。讀過這章后,你將對 Node.js 有一個基本的認識,同時了解它與 JavaScript 的深厚淵源。 第2章“安裝和配置Node.js” 這一章講述了如何在各種不同的環(huán)境下安裝和配置 Node.js 及其基本運行環(huán)境,同時你你可以了解到如何編譯Node.js,以及多版本管理工具?! 〉?章“Node.js 快速入門” 這一章講解Node.js的基礎知識,你將會學到如何使用 Node.js 的基本環(huán)境和工具進行開發(fā)、運行和調試。同時,還會講解異步式I/O與事件式編程的一些重要概念,這些概念將會貫穿全書。此外這一章還詳細介紹了 Node.js 的模塊和包的系統(tǒng),這些都是開發(fā)中經常會碰到的內容?! 〉?章“Node.js 核心模塊” 這一章以全局對象、基本工具、事件發(fā)射器、文件系統(tǒng)和 HTTP 為代表,介紹了 Node.js 最常用的核心模塊。你將會在后面的章節(jié)及以后的開發(fā)中經常與這些模塊打交道。 第5章“使用 Node.js 進行 Web 開發(fā)” 這一章是本書的實踐性章節(jié),一步一步教你如何從零開始用 Express 框架創(chuàng)建一個網(wǎng)站,實現(xiàn)路由控制、模板解析、會話管理、數(shù)據(jù)庫訪問等功能,最終創(chuàng)建一個 Web 2.0 微博網(wǎng)站?! 〉?章“Node.js 進階話題” 這一章涉及幾個進階話題,包括模塊加載機制、控制流分析和優(yōu)化、生產環(huán)境的應用部署等內容,最后還討論了 Node.js 適用的范圍,幫助讀者在今后的開發(fā)中作出更好的取舍?! 「戒汚“JavaScript 的高級特性” 這個附錄介紹了 JavaScript 的一些高級特性,如函數(shù)作用域、閉包和對象的操作等內容。這些特性在瀏覽器端的JavaScript 開發(fā)中并沒有受到應有的重視,而在 Node.js 中卻十分常見,閱讀這個附錄可以幫助你更好地理解并運用 JavaScript 進行復雜的網(wǎng)站開發(fā)。 附錄B“Node.js 編程規(guī)范” 這個附錄介紹了 Node.js 代碼風格的一些約定,遵守這些約定可以讓你的代碼更清晰、易懂,同時也有利于接口開發(fā)的統(tǒng)一。該附錄還分享了一些開發(fā)經驗,可以讓程序避免很多意外錯誤和性能損失。 誰應該閱讀本書 本書的目標讀者是想要學習 Node.js,但沒有任何系統(tǒng)的經驗的開發(fā)者。如果你聽說過 Node.js,并被它許多神奇的特性吸引,那么這本書就是為你準備的。通過閱讀本書,你可以對 Node.js 有全面的認識,學會如何用 Node.js 編程,了解事件驅動、異步式 I/O 的編程模式,同時還可以掌握一些使用 JavaScript 進行函數(shù)式編程的方法。 本書假設讀者已經學過至少一門編程語言,對基本的程序設計語言概念(如變量、函數(shù)、遞歸、對象)有所了解。如果你是首次學習編程語言,我建議你先學一門常見的且容易入門的語言,如 Java 或 C?! ∪绾伍喿x本書 熟悉瀏覽器端 JavaScript 的讀者將很容易學會 Node.js 的許多特性,包括事件式編程、閉包、回調函數(shù)等,因為這些特性已經在瀏覽器中被廣泛應用。同時,你還可以學到 Node.js 在Web 開發(fā)中的服務器端與瀏覽器端的結合方式,這無論是對前端設計還是后端開發(fā)都是有利的。你還會對 JavaScript 有一個全新的認識,因為服務端的 JavaScript 中沒有 DOM 和 BOM,也不存在瀏覽器之間的兼容性問題?! 〔皇煜?JavaScript但是了解C、Java、C++、C#的讀者將很容易學會 JavaScript 的語言特性及 Node.js 的基本機制,如模塊和包。你需要關注的僅僅是 JavaScript 語言的特別之處,以及服務器端開發(fā)中需要注意的一些要點?! ∫呀浄浅A私?Web 后端開發(fā)(如 PHP、ASP.net、Ruby on Rails、Django 等)的讀者,本書將通過 Node.js 給你一個不同的視野。你會發(fā)現(xiàn) Node.js 和這些傳統(tǒng)的框架有很大的區(qū)別,因為它使用了事件式編程和異步 I/O,所以你需要改變一些已有的思維方式。同時,你還能享受到 Web 前后端緊密配合帶來的新鮮感,并可能對 Ajax 有全新的認識。 如果是完全沒有接觸過JavaScript的讀者,那么我建議你看完本書的前兩章以后,花點時間到http://www.w3school.com.cn/js/網(wǎng)站看看 JavaScript 的入門教程。你只要了解基礎知識就行了,本書并不要求你學成一個JavaScript專家。在這之后請閱讀本書的附錄A,了解一下實際開發(fā)中可能會遇到的稍微復雜的語言特性。附錄A是為本書量身定做的,你可以從中很快地學會 Node.js 經常使用到的那些特性。如果你想更加深入系統(tǒng)地學習JavaScript,推薦閱讀Mozilla JavaScript指南http://developer.mozilla.org/en/JavaScript/Guide?! ”緯鴱牡?章開始,將介紹如何用 Node.js 開發(fā),你應該仔細閱讀這一章。第4章是一些最基本的模塊介紹,涉及Node.js 模塊的基本風格,這可能會幫助你理解后面介紹的 API。第5章是一個真槍實彈的實戰(zhàn)演練,跟隨這一章的每個步驟你就可以用 Node.js 實現(xiàn)一個真正的 Web 應用,體驗開發(fā)的成就感。第6章則是一些進階話題,你會在這里接觸到 Node.js的一些深層次概念,同時你還將學會如何真正部署 Node.js 應用。 本書的每一章最后都有一個參考資料小節(jié),里面有很多有價值的資料,如果感興趣不妨繼續(xù)深入閱讀。在閱讀本書的過程中,我建議你抽時間看看附錄B,在這里你會了解到Node.js 開發(fā)的一些編程規(guī)范,寫出符合社區(qū)風格的漂亮程序?! ∪绾螌W習 Node.js 通讀本書,你將會學到 Node.js 的很多東西,但如果想完全掌握它,我建議你親自嘗試運行本書中的每一段代碼。本書的所有代碼可以在http://www.byvoid.com/project/node上找到。 除此之外,你最好自己用 Node.js 做一個項目,因為通過實踐你會遇到很多問題,解決這些問題可以大大加深對 Node.js 的理解?! ∽⒁?,不要忘了互聯(lián)網(wǎng)網(wǎng)上的資源,比如Node.js 的官方 API 文檔http://nodejs.org/api/。我強烈推薦你去 CNodeJS 社區(qū)看看http://cnodejs.org/,這里匯集了許許多多中國優(yōu)秀的Node.js 開發(fā)者。他們每天都在討論著大量有關Node.js各個方面的話題,你可以在上面獲得很多幫助。同時,CNodeJS 社區(qū)的網(wǎng)站也是用 Node.js 寫成的,而且是開源的,它是一個非常好的讓你了解如何用 Node.js 開發(fā)網(wǎng)站的實例?! ◇w例說明 本書正文中出現(xiàn)的代碼引用都會以等寬字體標出,例如: console.log('Node.js')。代碼段會以段落的形式用等寬字體顯示,例如: function hello() { console.log('Hello, world!'); } 在正文之中,偶爾還會穿插一些提示和警告,例如: 這是一個提示?! ∵@是一個警告?! ≈轮x 感謝對這本書提出寶貴意見的朋友們,他們是牟瞳、李垚 、周越、鐘音、蕭騏 、楊旭東、孫嘉龍、范澤一、宋文杰、續(xù)本達、田勁鋒、孟亞蘭和李宇亮。他們?yōu)楸緯慕Y構、內容、語言表述等方面給出了許多有建設性的意見?! 「兄x CNodeJS 社區(qū)的賈超、田永強和微軟亞洲研究院的楊懋,以及VMware公司的柴可夫。他們不僅幫助審閱了本書,還解決了許多技術問題,給這本書提出了許多改進方案?! 「兄x弓辰開發(fā)的 Rime 輸入法 ,我用它完成了本書的創(chuàng)作?! ∵€要感謝我的朋友徐可可,圖靈公司的楊海玲、謝工、王軍花以及各位編輯,她們給我提供了許多幫助和鼓舞,沒有她們的激勵,我很難頂著巨大的學業(yè)壓力堅持寫完這本書。
內容概要
《Node.js開發(fā)指南》首先簡要介紹Node.js,然后通過各種示例講解Node.js的基本特性,再用案例式教學的方式講述如何用Node.js進行Web開發(fā),接著探討一些Node.js進階話題,最后展示如何將一個Node.js應用部署到生產環(huán)境中。
《Node.js開發(fā)指南》面向對Node.js感興趣,但沒有基礎的讀者,也可供已了解Node.js,并對Web前端/后端開發(fā)有一定經驗,同時想嘗試新技術的開發(fā)者參考。
作者簡介
郭家寶(BYVoid),清華大學計算機系2010級本科生,曾獲得信息學奧林匹克競賽(NOI)金牌。他從中學開始涉足開源開發(fā),參與過“漢典網(wǎng)”等許多Web項目的前后端設計開發(fā),同時是Linux輸入法ibus-pinyin的作者。他從2009年Node.js誕生之始,就一直在關注它的發(fā)展,有許多使用Node.js建立網(wǎng)站的經驗,活躍于CNode社區(qū)。
書籍目錄
目 錄
第1章 Node.js簡介 1
1.1 Node.js是什么 2
1.2 Node.js能做什么 3
1.3 異步式I/O與事件驅動 4
1.4 Node.js的性能 5
1.4.1 Node.js架構簡介 5
1.4.2 Node.js與PHP+Nginx 6
1.5 JavaScript簡史 6
1.5.1 Netscape與LiveScript 7
1.5.2 Java與Javascript 7
1.5.3 微軟的加入——JScript 8
1.5.4 標準化——ECMAScript 8
1.5.5 瀏覽器兼容性問題 9
1.5.6 引擎效率革命和JavaScript的未來 9
1.6 CommonJS 10
1.6.1 服務端JavaScript的重生 10
1.6.2 CommonJS規(guī)范與實現(xiàn) 11
1.7 參考資料 12
第2章 安裝和配置Node.js 13
2.1 安裝前的準備 14
2.2 快速安裝 14
2.2.1 Microsoft Windows系統(tǒng)上安裝Node.js 14
2.2.2 Linux發(fā)行版上安裝Node.js 16
2.2.3 Mac OS X上安裝Node.js 16
2.3 編譯源代碼 17
2.3.1 在POSIX系統(tǒng)中編譯 17
2.3.2 在Windows系統(tǒng)中編譯 18
2.4 安裝Node包管理器 18
2.5 安裝多版本管理器 19
2.6 參考資料 21
第3章 Node.js快速入門 23
3.1 開始用 Node.js編程 24
3.1.1 Hello World 24
3.1.2 Node.js命令行工具 25
3.1.3 建立HTTP服務器 26
3.2 異步式I/O與事件式編程 29
3.2.1 阻塞與線程 29
3.2.2 回調函數(shù) 31
3.2.3 事件 33
3.3 模塊和包 34
3.3.1 什么是模塊 35
3.3.2 創(chuàng)建及加載模塊 35
3.3.3 創(chuàng)建包 38
3.3.4 Node.js包管理器 41
3.4 調試 45
3.4.1 命令行調試 45
3.4.2 遠程調試 47
3.4.3 使用Eclipse調試Node.js 48
3.4.4 使用node-inspector調試Node.js 54
3.5 參考資料 55
第4章 Node.js核心模塊 57
4.1 全局對象 58
4.1.1 全局對象與全局變量 58
4.1.2 process 58
4.1.3 console 60
4.2 常用工具util 61
4.2.1 util.inherits 61
4.2.2 util.inspect 62
4.3 事件驅動events 63
4.3.1 事件發(fā)射器 64
4.3.2 error事件 65
4.3.3 繼承EventEmitter 65
4.4 文件系統(tǒng)fs 65
4.4.1 fs.readFile 66
4.4.2 fs.readFileSync 67
4.4.3 fs.open 67
4.4.4 fs.read 68
4.5 HTTP服務器與客戶端 70
4.5.1 HTTP服務器 70
4.5.2 HTTP客戶端 74
4.6 參考資料 77
第5章 使用Node.js進行Web開發(fā) 79
5.1 準備工作 80
5.1.1 使用http模塊 82
5.1.2 Express框架 83
5.2 快速開始 84
5.2.1 安裝Express 84
5.2.2 建立工程 85
5.2.3 啟動服務器 86
5.2.4 工程的結構 87
5.3 路由控制 89
5.3.1 工作原理 89
5.3.2 創(chuàng)建路由規(guī)則 92
5.3.3 路徑匹配 93
5.3.4 REST風格的路由規(guī)則 94
5.3.5 控制權轉移 95
5.4 模板引擎 97
5.4.1 什么是模板引擎 97
5.4.2 使用模板引擎 98
5.4.3 頁面布局 99
5.4.4 片段視圖 100
5.4.5 視圖助手 100
5.5 建立微博網(wǎng)站 102
5.5.1 功能分析 102
5.5.2 路由規(guī)劃 102
5.5.3 界面設計 103
5.5.4 使用Bootstrap 104
5.6 用戶注冊和登錄 107
5.6.1 訪問數(shù)據(jù)庫 107
5.6.2 會話支持 110
5.6.3 注冊和登入 111
5.6.4 頁面權限控制 120
5.7 發(fā)表微博 123
5.7.1 微博模型 123
5.7.2 發(fā)表微博 125
5.7.3 用戶頁面 126
5.7.4 首頁 127
5.7.5 下一步 129
5.8 參考資料 129
第6章 Node.js進階話題 131
6.1 模塊加載機制 132
6.1.1 模塊的類型 132
6.1.2 按路徑加載模塊 132
6.1.3 通過查找node_modules目錄加載模塊 133
6.1.4 加載緩存 134
6.1.5 加載順序 134
6.2 控制流 135
6.2.1 循環(huán)的陷阱 135
6.2.2 解決控制流難題 137
6.3 Node.js應用部署 138
6.3.1 日志功能 138
6.3.2 使用cluster模塊 140
6.3.3 啟動腳本 142
6.3.4 共享80端口 143
6.4 Node.js不是銀彈 144
6.5 參考資料 146
附錄A JavaScript的高級特性 147
附錄B Node.js編程規(guī)范 167
索引 175
章節(jié)摘錄
Node.js,或者 Node,是一個可以讓 JavaScript 運行在服務器端的平臺。它可以讓 JavaScript 脫離瀏覽器的束縛運行在一般的服務器環(huán)境下,就像運行 Python、Perl、PHP、Ruby 程序一樣。你可以用 Node.js 輕松地進行服務器端應用開發(fā),Python、Perl、PHP、Ruby 能做的事情 Node.js 幾乎都能做,而且可以做得更好?! ode.js 是一個為實時Web(Real-time Web)應用開發(fā)而誕生的平臺,它從誕生之初就充分考慮了在實時響應、超大規(guī)模數(shù)據(jù)要求下架構的可擴展性。這使得它摒棄了傳統(tǒng)平臺依靠多線程來實現(xiàn)高并發(fā)的設計思路,而采用了單線程、異步式I/O、事件驅動式的程序設計模型。這些特性不僅帶來了巨大的性能提升,還減少了多線程程序設計的復雜性,進而提高了開發(fā)效率?! ode.js 最初是由 Ryan Dahl 發(fā)起的開源項目,后來被 Joyent 公司注意到。Joyent 公司將 Ryan Dahl 招入旗下,因此現(xiàn)在的 Node.js 由 Joyent 公司管理并維護。盡管它誕生的時間(2009年)還不長,但它的周圍已經形成了一個龐大的生態(tài)系統(tǒng)。Node.js 有著強大而靈活的包管理器(node package manager,npm),目前已經有上萬個第三方模塊,其中有網(wǎng)站開發(fā)框架,有 MySQL、PostgreSQL、MongoDB 數(shù)據(jù)庫接口,有模板語言解析、CSS 生成工具、郵件、加密、圖形、調試支持,甚至還有圖形用戶界面和操作系統(tǒng) API工具。由 VMware 公司建立的云計算平臺 Cloud Foundry 率先支持了 Node.js。2011年6月,微軟宣布與 Joyent 公司合作,將 Node.js 移植到 Windows,同時 Windows Azure 云計算平臺也支持 Node.js。Node.js 目前還處在迅速發(fā)展階段,相信在不久的未來它一定會成為流行的Web應用開發(fā)平臺。讓我們從現(xiàn)在開始,一同探索 Node.js 的美妙世界吧! 1.1 Node.js 是什么 Node.js 不是一種獨立的語言,與 PHP、Python、Perl、Ruby 的“既是語言也是平臺”不同。Node.js 也不是一個 JavaScript 框架,不同于 CakePHP、Django、Rails。Node.js 更不是瀏覽器端的庫,不能與 jQuery、ExtJS 相提并論。Node.js 是一個讓 JavaScript 運行在服務端的開發(fā)平臺,它讓 JavaScript 成為腳本語言世界的一等公民,在服務端堪與 PHP、Python、Perl、Ruby 平起平坐?! ode.js 是一個劃時代的技術,它在原有的 Web 前端和后端技術的基礎上總結并提煉出了許多新的概念和方法,堪稱是十多年來 Web 開發(fā)經驗的集大成者。Node.js 可以作為服務器向用戶提供服務,與 PHP、Python、Ruby on Rails 相比,它跳過了 Apache、Nginx 等 HTTP 服務器,直接面向前端開發(fā)。Node.js 的許多設計理念與經典架構(如 LAMP)有著很大的不同,可提供強大的伸縮能力,以適應21世紀10年代以后規(guī)模越來越龐大的互聯(lián)網(wǎng)環(huán)境。 Node.js 與 JavaScript 說起 JavaScript,不得不讓人想到瀏覽器。傳統(tǒng)意義上,JavaScript 是由 ECMAScript、文檔對象模型(DOM)和瀏覽器對象模型(BOM)組成的,而 Mozilla 則指出 JavaScript 由 Core JavaScript 和 Client JavaScript 組成。之所以會有這種分歧,是因為 JavaScript 和瀏覽器之間復雜的歷史淵源,以及其命途多舛的發(fā)展歷程所共同造成的,我們會在后面詳述。我們可以認為,Node.js 中所謂的 JavaScript 只是 Core JavaScript,或者說是 ECMAScript 的一個實現(xiàn),不包含 DOM、BOM 或者 Client JavaScript。這是因為 Node.js 不運行在瀏覽器中,所以不需要使用瀏覽器中的許多特性?! ode.js 是一個讓 JavaScript 運行在瀏覽器之外的平臺。它實現(xiàn)了諸如文件系統(tǒng)、模塊、包、操作系統(tǒng) API、網(wǎng)絡通信等 Core JavaScript 沒有或者不完善的功能。歷史上將 JavaScript 移植到瀏覽器外的計劃不止一個,但Node.js 是最出色的一個。隨著 Node.js 的成功,各種瀏覽器外的 JavaScript 實現(xiàn)逐步興起,因此產生了 CommonJS 規(guī)范。CommonJS 試圖擬定一套完整的 JavaScript 規(guī)范,以彌補普通應用程序所需的 API,譬如文件系統(tǒng)訪問、命令行、模塊管理、函數(shù)庫集成等功能。CommonJS 制定者希望眾多服務端 JavaScript 實現(xiàn)遵循 CommonJS 規(guī)范,以便相互兼容和代碼復用。Node.js 的部份實現(xiàn)遵循了CommonJS規(guī)范,但由于兩者還都處于誕生之初的快速變化期,也會有不一致的地方?! ode.js 的 JavaScript 引擎是 V8,來自 Google Chrome 項目。V8 號稱是目前世界上最快的 JavaScript 引擎,經歷了數(shù)次引擎革命,它的 JIT(Just-in-time Compilation,即時編譯)執(zhí)行速度已經快到了接近本地代碼的執(zhí)行速度。Node.js 不運行在瀏覽器中,所以也就不存在 JavaScript 的瀏覽器兼容性問題,你可以放心地使用 JavaScript 語言的所有特性?! ?hellip;…
媒體關注與評論
“簡潔的代碼示例,輕快的語言,這本書帶你進入同樣簡明的Node.js世界。如果你想立即使用Node.js進行Web開發(fā),這里提供了絕佳的指導。” ——楊懋,微軟亞洲研究院主管研究員 “本書是一本淺顯易懂的Node.js入門讀物,適合有一定JavaScript基礎的開發(fā)人員閱讀。讀過這本書,你就完成了從學習Node.js相關知識,到使用Node.js構建實際Web系統(tǒng)的全過程。難能可貴的是,本書在講解Node.js的同時,還詳細介紹了Web開發(fā)領域的通用知識與原理,這些對開發(fā)完善健壯的Web應用必不可少。” ——賈超,淘寶網(wǎng)數(shù)據(jù)產品部資深經理,CNode社區(qū)發(fā)起者 “在CNode社區(qū)企盼將近兩年后,第一本中文Node.js圖書終于誕生了。跟著家寶同學的這本《Node.js開發(fā)指南》,你就會走進Node,初探到Node的好和美。” ——田永強(樸靈),淘寶網(wǎng)數(shù)據(jù)產品部門前端工程師,CNode社區(qū)組織者之一
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載