Node.js設計模式(第三版)(簡體書)
商品資訊
ISBN13:9787519855970
出版社:中國電力出版社
作者:(愛爾蘭)馬里奧‧卡西羅
出版日:2021/08/01
裝訂/頁數:平裝/592頁
規格:24cm*17cm (高/寬)
版次:一版
商品簡介
序
目次
商品簡介
《Node.js設計模式(第三版)》中使用好的辦法來實現各種設計模式以創造高效且健壯的Node.js應用程序。該書首先介紹Node.js的基礎知識,包括異步事件驅動架構以及基本的設計模式。然後,介紹怎樣用callback(回調)、Pronuse以及async/await機制來構建異步的控制流模式。其次,介紹Node.js的stream(流)並演示stream的強大功能,使讀者能充分地利用這些功能。該書分析了三大類設計模式,即創建型的設計模式、結構型的設計模式以及行為型的設計模式,並介紹了怎樣在JavaScript語言及Node.js平臺中充分運用這些模式。最後,書中研究了一些比較高端的概念,例如UniversalJavaScript、Node.js程序的擴展問題以及消息傳遞模式等,以幫助讀者打造企業級的分布式應用程序。
《Node.js設計模式(第三版)》適合已了解Node.js技術,同時希望在程序的效率、設計及可擴展程度方面有所提高的開發者。閱讀該書需要讀者掌握Web應用程序、Web Service、數據庫與數據結構方面的開發技術。
《Node.js設計模式(第三版)》適合已了解Node.js技術,同時希望在程序的效率、設計及可擴展程度方面有所提高的開發者。閱讀該書需要讀者掌握Web應用程序、Web Service、數據庫與數據結構方面的開發技術。
序
許多人都認為Node.js改變了整個行業,稱得上是近十年中Web開發界最大的創新。除了具備豐富的技術能力,Node.js還促使Web開發界乃至整個軟件開發行業形成一種新的開發範式。
首先,Node.js應用程序是用JavaScript語言寫的,這是最流行的Web開發語言,而且也是唯一受到所有網頁瀏覽器直接支持的語言。這意味著所有層面的應用,都可以用同一種語言來開發,而且服務器與客戶端之間能夠共享這種語言。此外,這也縮短了前端工程師與後端工程師之間的距離,讓前端開發者能夠相當直觀地接觸後端編程工作。只要熟悉Node.js與JavaScript,你就可以針對各種平臺與環境輕鬆地構建軟件。
JavaScript有助於Node.js流行,而Node.js本身也反過來促進了JavaScript語言的興起與演變,它讓人意識到,JavaScript不僅在客戶端有用,在服務器端也很有價值。使用Node.js開發的過程中,人們意識到JavaScript是一門實用而靈活的語言,並且能夠以事件驅動的方式來寫代碼。另外,這也是一門混合型語言,既有面向物件的特徵,又支持函數式編程。
Node.js的第二項重大革新,是單線程編程模型與異步架構。這顯然有助於提升性能,並且讓程序易於擴展,除此之外,它還改變了開發者處理並發與並行的方式。它用隊列取代互斥鎖,用回調取代線程,用因果關係(causality)取代同步,這些抽象方式要比與之相對應的傳統做法更為簡單,同時在功能上還相當強大,讓開發者能夠效率極高地解決日常工作中的問題。
第三項,也是最關鍵的一項創新,是Node.js培養了一套生態系統,其中有npm包管理器,有不斷壯大的數據庫模塊,有樂於助人的代碼提交者,更為重要的是,這套生態系統有自己的基本理念,也就是提倡簡潔、注重實效,並推崇模塊化的設計。
正因為有這些特點,Node.js跟其他一些客戶端的平臺相比,會給人不同的感覺。新接觸這種開發範式的程序員,經常找不到思路,甚至連最常見的設計與編程任務,都不知道應該如何解決才好。他們經常會問:我怎麼安排代碼的結構?這個項目怎麼設計最好?我怎麼才能讓應用程序變得更加模塊化?我如何高效地處理某一批異步調用?我怎樣才能保證這個應用程序項目在發展的過程中不會崩潰?其實這都可以歸結為:我怎麼才能用Node.js把它正確實現出來?Node.js目前已經是個相當成熟的平臺了,因此這些問題幾乎都可以通過某種設計模式、某項編程技巧或某套推薦方案,輕鬆地予以解決。這本書,正是要帶著大家領略這些模式、技巧與方案的形成過程,告訴你某些常見的問題,究竟應該採用哪一種做法來處理,同時還會教你怎樣從這些做法出發,針對你自己的問題來打造特定的解決方案。
在閱讀本書的過程中,你會學到下列幾方面內容:
.“Node way”:
指你在用Node.js開發程序時,應該以怎樣的思路來切入。你會學到傳統的設計模式與Node.js的模式之間有哪些區別,以及如何設計出只專注於一件事的模塊。
·一套設計模式,用以解決常見的Node.js設計問題與編程問題:
你會學到一套全方位的(也就是“瑞士刀式的”)模式,可以高效地解決日常工作中的開發與設計問題。
·如何編寫易於擴展且效率較高的Node.js應用程序:
你會理解基本的設計結構,以及編寫大型Node.js應用程序時應遵循的原則,並學會利用這些原則,把項目安排得更加易於擴展。你還會學到怎樣運用這些理念,來解決現有設計模式之外的新問題。
·用“現代的JavaScript”編程:
JavaScript大概在1995年就出現了,但是經歷過許多變化,最近幾年變得尤其多。這本書會利用比較新的JavaScript機制來編程,例如類、Promise、生成器函數、async/await等,讓你能夠跟上JavaScript的潮流。
整本書用的都是實際編程之中的庫與技術,例如LevelDB、Redis、RabbitMQ、Ze-roMQ、Express等,筆者會用這些東西來演示某個模式或編程技巧,這不僅可以讓範例更有意義,而且還會讓大家更全面地接觸Node.js的生態系統以及與之相關的全套解決方案。
無論是工作項目、興趣項目還是開源項目,都可以從這本書中受益,你在使用Node.js做這些項目時,可以利用本書中的知識,來判斷這些項目能夠使用什麼樣的模式與技巧,並把自己的編程與設計思路,用Node.js開發者能夠聽懂的說法分享給大家。而且,在這個過程中,你還可以更好地體會到Node.js的發展方向,以及自己應該如何為Node.js的發展出力。
閱讀本書之前所要做的準備
為了嘗試源代碼,你必須安裝一個能夠正常運作的Node.js(版本要等於或大於14),以及一個npm(版本要等於或大於6)。如果某些範例還用到了其他工具,那麼筆者會在那個範例之中提到相應的工具。此外,你還需要熟悉命令行,知道如何安裝npm軟件包以及如何運行Node.js應用程序。最後,你需要用某種文本編輯器來編寫代碼.並裝有一個版本較新的網頁瀏覽器。
首先,Node.js應用程序是用JavaScript語言寫的,這是最流行的Web開發語言,而且也是唯一受到所有網頁瀏覽器直接支持的語言。這意味著所有層面的應用,都可以用同一種語言來開發,而且服務器與客戶端之間能夠共享這種語言。此外,這也縮短了前端工程師與後端工程師之間的距離,讓前端開發者能夠相當直觀地接觸後端編程工作。只要熟悉Node.js與JavaScript,你就可以針對各種平臺與環境輕鬆地構建軟件。
JavaScript有助於Node.js流行,而Node.js本身也反過來促進了JavaScript語言的興起與演變,它讓人意識到,JavaScript不僅在客戶端有用,在服務器端也很有價值。使用Node.js開發的過程中,人們意識到JavaScript是一門實用而靈活的語言,並且能夠以事件驅動的方式來寫代碼。另外,這也是一門混合型語言,既有面向物件的特徵,又支持函數式編程。
Node.js的第二項重大革新,是單線程編程模型與異步架構。這顯然有助於提升性能,並且讓程序易於擴展,除此之外,它還改變了開發者處理並發與並行的方式。它用隊列取代互斥鎖,用回調取代線程,用因果關係(causality)取代同步,這些抽象方式要比與之相對應的傳統做法更為簡單,同時在功能上還相當強大,讓開發者能夠效率極高地解決日常工作中的問題。
第三項,也是最關鍵的一項創新,是Node.js培養了一套生態系統,其中有npm包管理器,有不斷壯大的數據庫模塊,有樂於助人的代碼提交者,更為重要的是,這套生態系統有自己的基本理念,也就是提倡簡潔、注重實效,並推崇模塊化的設計。
正因為有這些特點,Node.js跟其他一些客戶端的平臺相比,會給人不同的感覺。新接觸這種開發範式的程序員,經常找不到思路,甚至連最常見的設計與編程任務,都不知道應該如何解決才好。他們經常會問:我怎麼安排代碼的結構?這個項目怎麼設計最好?我怎麼才能讓應用程序變得更加模塊化?我如何高效地處理某一批異步調用?我怎樣才能保證這個應用程序項目在發展的過程中不會崩潰?其實這都可以歸結為:我怎麼才能用Node.js把它正確實現出來?Node.js目前已經是個相當成熟的平臺了,因此這些問題幾乎都可以通過某種設計模式、某項編程技巧或某套推薦方案,輕鬆地予以解決。這本書,正是要帶著大家領略這些模式、技巧與方案的形成過程,告訴你某些常見的問題,究竟應該採用哪一種做法來處理,同時還會教你怎樣從這些做法出發,針對你自己的問題來打造特定的解決方案。
在閱讀本書的過程中,你會學到下列幾方面內容:
.“Node way”:
指你在用Node.js開發程序時,應該以怎樣的思路來切入。你會學到傳統的設計模式與Node.js的模式之間有哪些區別,以及如何設計出只專注於一件事的模塊。
·一套設計模式,用以解決常見的Node.js設計問題與編程問題:
你會學到一套全方位的(也就是“瑞士刀式的”)模式,可以高效地解決日常工作中的開發與設計問題。
·如何編寫易於擴展且效率較高的Node.js應用程序:
你會理解基本的設計結構,以及編寫大型Node.js應用程序時應遵循的原則,並學會利用這些原則,把項目安排得更加易於擴展。你還會學到怎樣運用這些理念,來解決現有設計模式之外的新問題。
·用“現代的JavaScript”編程:
JavaScript大概在1995年就出現了,但是經歷過許多變化,最近幾年變得尤其多。這本書會利用比較新的JavaScript機制來編程,例如類、Promise、生成器函數、async/await等,讓你能夠跟上JavaScript的潮流。
整本書用的都是實際編程之中的庫與技術,例如LevelDB、Redis、RabbitMQ、Ze-roMQ、Express等,筆者會用這些東西來演示某個模式或編程技巧,這不僅可以讓範例更有意義,而且還會讓大家更全面地接觸Node.js的生態系統以及與之相關的全套解決方案。
無論是工作項目、興趣項目還是開源項目,都可以從這本書中受益,你在使用Node.js做這些項目時,可以利用本書中的知識,來判斷這些項目能夠使用什麼樣的模式與技巧,並把自己的編程與設計思路,用Node.js開發者能夠聽懂的說法分享給大家。而且,在這個過程中,你還可以更好地體會到Node.js的發展方向,以及自己應該如何為Node.js的發展出力。
閱讀本書之前所要做的準備
為了嘗試源代碼,你必須安裝一個能夠正常運作的Node.js(版本要等於或大於14),以及一個npm(版本要等於或大於6)。如果某些範例還用到了其他工具,那麼筆者會在那個範例之中提到相應的工具。此外,你還需要熟悉命令行,知道如何安裝npm軟件包以及如何運行Node.js應用程序。最後,你需要用某種文本編輯器來編寫代碼.並裝有一個版本較新的網頁瀏覽器。
目次
前言
第1章 Node.js平臺
1.1 Node.js開發理念
1.1.1 小核心
1.1.2 小模塊
1.1.3 小接觸面(小暴露面)
1.1.4 簡單實用
1.2 Node.js的工作原理
1.2.1 I/O
是慢速操作
1.2.2 阻塞式I/O
1.2.3 非阻塞式的I/0
1.2.4 事件多路分離
1.2.5reactor模式
1.2.6Node.js的I/O引擎-Libuv
1.2.7 Node.js的全套結構
1.3 Node.js平臺之中的JavaScript
1.3.1 放心地使用最新版的JavaScript
1.3.2 模塊系統
1.3.3 訪問操作系統中的各項服務
1.3.4 運行原生代碼
1.4 小結
第2章 模塊系統
2.1 為什麼需要模塊
2.2 JavaScript與Node.js的模塊系統
2.3 模塊系統及其模式
2.4 CommonJS模塊
2.4.1 自制的模塊加載器
2.4.2 定義模塊
2.4.3 module.exports與exports
2.4.4require函數是同步函數
2.4.5 模塊解析算法
2.4.6 模塊緩存
2.4.7 循環依賴
2.5 定義模塊所用的模式
2.5.1 命名導出模式
2.5.2 函數導出模式
2.5.3 類導出模式
2.5.4 實例導出模式
2.5.5 通過monkey patching模式修改其他模塊或全局作用域
2.6 ECMAScript模塊(ESM)
2.6.1 在Node.js平臺中使用ESM
2.6.2 命名導出模式與命名引入
2.6.3 默認導出與默認引入
2.6.4 混用命名導出與默認導出
2.6.5 模塊標識符
2.6.6 異步引入
2.6.7 詳細解釋模塊的加載過程
2.6.8 修改其他模塊
2.7 ESM與CommonJS之間的區別以及交互使用技巧
2.7.1 ESM是在嚴格模式下運行的
2.7.2 ESM不支持CommonJS提供的某些引用
2.7.3 在其中一種模塊系統裡面使用另一種模塊
2.8 小結
第3章 回調與事件
3.1 Callback(回調)模式
3.1.1 continuation-passing風格(CPS)
3.1.2 某個函數究竟是同步函數,還是異步函數?
3.1.3 在Node.js裡面定義回調的慣例
3.2 0bserver(觀察者)模式
3.2.1 EventEmitter
3.2.2 創建並使用EventEmitter
……
第4章 利用回調實現異步控制流模式
第5章 利用Promise與async/await實現異步控制流模式
第6章 用Stream編程
第7章 創建型的設計模式
第8章 結構型的設計模式
第9章 行為型的設計模式
第10章 用Universal JavaScript開發Web應用程序
第11章 高級技巧
第12章 用架構模式實現擴展
第13章 消息傳遞與集成模式
第1章 Node.js平臺
1.1 Node.js開發理念
1.1.1 小核心
1.1.2 小模塊
1.1.3 小接觸面(小暴露面)
1.1.4 簡單實用
1.2 Node.js的工作原理
1.2.1 I/O
是慢速操作
1.2.2 阻塞式I/O
1.2.3 非阻塞式的I/0
1.2.4 事件多路分離
1.2.5reactor模式
1.2.6Node.js的I/O引擎-Libuv
1.2.7 Node.js的全套結構
1.3 Node.js平臺之中的JavaScript
1.3.1 放心地使用最新版的JavaScript
1.3.2 模塊系統
1.3.3 訪問操作系統中的各項服務
1.3.4 運行原生代碼
1.4 小結
第2章 模塊系統
2.1 為什麼需要模塊
2.2 JavaScript與Node.js的模塊系統
2.3 模塊系統及其模式
2.4 CommonJS模塊
2.4.1 自制的模塊加載器
2.4.2 定義模塊
2.4.3 module.exports與exports
2.4.4require函數是同步函數
2.4.5 模塊解析算法
2.4.6 模塊緩存
2.4.7 循環依賴
2.5 定義模塊所用的模式
2.5.1 命名導出模式
2.5.2 函數導出模式
2.5.3 類導出模式
2.5.4 實例導出模式
2.5.5 通過monkey patching模式修改其他模塊或全局作用域
2.6 ECMAScript模塊(ESM)
2.6.1 在Node.js平臺中使用ESM
2.6.2 命名導出模式與命名引入
2.6.3 默認導出與默認引入
2.6.4 混用命名導出與默認導出
2.6.5 模塊標識符
2.6.6 異步引入
2.6.7 詳細解釋模塊的加載過程
2.6.8 修改其他模塊
2.7 ESM與CommonJS之間的區別以及交互使用技巧
2.7.1 ESM是在嚴格模式下運行的
2.7.2 ESM不支持CommonJS提供的某些引用
2.7.3 在其中一種模塊系統裡面使用另一種模塊
2.8 小結
第3章 回調與事件
3.1 Callback(回調)模式
3.1.1 continuation-passing風格(CPS)
3.1.2 某個函數究竟是同步函數,還是異步函數?
3.1.3 在Node.js裡面定義回調的慣例
3.2 0bserver(觀察者)模式
3.2.1 EventEmitter
3.2.2 創建並使用EventEmitter
……
第4章 利用回調實現異步控制流模式
第5章 利用Promise與async/await實現異步控制流模式
第6章 用Stream編程
第7章 創建型的設計模式
第8章 結構型的設計模式
第9章 行為型的設計模式
第10章 用Universal JavaScript開發Web應用程序
第11章 高級技巧
第12章 用架構模式實現擴展
第13章 消息傳遞與集成模式
主題書展
更多
主題書展
更多書展購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

