国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

精讀《深入淺出Node.js》

codergarden / 2810人閱讀

摘要:從社區和過往的經驗而言異步編程的難題已經基本解決無論是通過事件還是通過模式或者流程控制庫。本章主要介紹了主流的幾種異步編程解決方案這是目前中主要使用的方案。最后因為人們總是習慣性地以線性的方式進行思考以致異步編程相對較為難以掌握。

前言

如果你想要深入學習Node,那你不能錯過《深入淺出Node.js》這本書,它從不同的視角介紹了 Node 內在的特點和結構。由首章Node 介紹為索引,涉及Node 的各個方面,主要內容包含模塊機制的揭示、異步I/O 實現原理的展現、異步編程的探討、內存控制的介紹、二進制數據Buffer 的細節、Node 中的網絡編程基礎、Node 中的Web 開發、進程間的消息傳遞、Node 測試以及通過Node 構建產品需要的注意事項。最后的附錄介紹了Node 的安裝、調試、編碼規范和NPM 倉庫等事宜。在讀這本書的過程中我收獲頗多,并用思維導圖的方式記錄下來,方便自己后期溫故。如果你剛好沒有讀過,可以當做度這本書的預習閱讀,相信你也會有所收獲(思維導圖圖片可能有點小,記得點開看)

第1章 Node簡介

第2章 模塊機制


CommonJS提出的規范均十分簡單,但是現實意義卻十分強大。Node通過模塊規范,組織了 自身的原生模塊,彌補JavaScript弱結構性的問題,形成了穩定的結構,并向外提供服務。NPM 通過對包規范的支持,有效地組織了第三方模塊,這使得項目開發中的依賴問題得到很好的解決, 并有效提供了分享和傳播的平臺,借助第三方開源力量,使得Node第三方模塊的發展速度前所未 有,這對于其他后端JavaScript語言實現而言是從未有過的。從一定的角度上講,CommonJS規范 幫助Node形成了它的骨骼。只有茁壯的根,才能培養出茂盛的枝葉,并成長為參天大樹。正是這 些底層的規范和實踐,使得Node有序地發展著,擺脫掉過去JavaScript紛亂和被誤解的局面,進 而進化成良性的生態系統。

第3章 異步I/O


本章介紹了異步I/O和另一些非I/O的異步方法。可以看出,事件循環是異步實現的核心,它 與瀏覽器中的執行模型基本保持了一致。而像古老的Rhino,盡管是較早就能在服務器端運行的 JavaScript運行時,但是執行模型并不像瀏覽器采用事件驅動,而是像其他語言一般采用同步I/O 作為主要模型,這造成它在性能上無所發揮。Node正是依靠構建了一套完善的高性能異步I/O框 架,打破了JavaScript在服務器端止步不前的局面。

第4章 異步編程


在接觸Node的過程中,很多人粗略地接觸了幾個回調函數之后就放棄了。盡管異步編程略微 艱難,但是并非一無是處,一旦習慣,就顯得自然。從社區和過往的經驗而言,JavaScript異步編 程的難題已經基本解決,無論是通過事件,還是通過Promise/Deferred模式,或者流程控制庫。相 信在掌握以上技巧之后,異步編程不是難事,習慣異步編程之后,將會收獲許多值得享受的編程 體驗。

本章主要介紹了主流的幾種異步編程解決方案,這是目前JavaScript中主要使用的方案。但對 于其他語言而言,還有協程(coroutine)等方式。但是由于Node基于V8的原因,在目前EMCAScript5 的實現下還不支持協程。這些標準和規范還在制定中,所以暫時不作介紹。未來的V8如果支持 Generator,也將在Node中能直接使用。

最后,因為人們總是習慣性地以線性的方式進行思考,以致異步編程相對較為難以掌握。這 個世界以異步運行的本質是不會因為大家線性思維的慣性而改變。就像日出月落不會因為你的心 情而改變其自有的運行軌跡。

第5章 內存控制

Node將JavaScript的主要應用場景擴展到了服務器端,相應要考慮的細節也與瀏覽器端不同, 需要更嚴謹地為每一份資源作出安排。總的來說,內存在Node中不能隨心所欲地使用,但也不是 完全不擅長。本章介紹了內存的各種限制,希望讀者可以在使用中規避禁忌,與生態系統中的各 種軟件搭配,發揮Node的長處。

第6章 理解Buffer


體驗過JavaScript友好的字符串操作后,有些開發者可能會形成思維定勢,將Buffer當做字 符串來理解。但字符串與Buffer之間有實質上的差異,即Buffer是二進制數據,字符串與Buffer 之間存在編碼關系。因此,理解Buffer的諸多細節十分必要,對于如何高效處理二進制數據十 分有用。

第7章 網絡編程


Node基于事件驅動和非阻塞設計,在分布式環境中尤其能發揮出它的特長,基于事件驅動可 以實現與大量的客戶端進行連接,非阻塞設計則讓它可以更好地提升網絡的響應吞吐。Node提供 了相對底層的網絡調用,以及基于事件的編程接口,使得開發者在這些模塊上十分輕松地構建網 絡應用。下一章我們將在本章的基礎上探討具體的Web應用。

第8章 構建Web應用


本章涉及的內容較為豐富,在Web應用的整個構建過程中,從處理請求到響應請求的整個過 程都有原理性闡述,整理本章細節就可以完成一個功能完備的Web開發框架。過去的各種Web技 術,隨著框架和庫的成型,開發者往往迷糊地知道應用框架和庫,卻不知道細節的實現,這好比 沒有地圖卻在野地里行進。本章的內容希望能為Node開發者帶來地圖似的啟發,在開發Web應用 時能夠心有輪廓,明了細微。

現在知名和成熟的Web框架有Connect、Express等,本章中的內容在這些框架中都有實現, 因為行文的原因,本章中的代碼實現得較為粗糙,實際使用請使用這些成熟的框架。

第9章 玩轉進程

盡管Node從單線程的角度來講它有夠脆弱的:既不能充分利用多核CPU資源,穩定性也無 法得到保障。但是群體的力量是強大的,通過簡單的主從模式,就可以將應用的質量提升一個 檔次。在實際的復雜業務中,我們可能要啟動很多子進程來處理任務,結構甚至遠比主從模式 復雜,但是每個子進程應當是簡單到只做好一件事,然后通過進程間通信技術將它們連接起來 即可。這符合Unix的設計理念,每個進程只做一件事,并做好一件事,將復雜分解為簡單,將 簡單組合成強大。

盡管通過 child_process 模塊可以大幅提升Node的穩定性,但是一旦主進程出現問題, 所 有子進程將會失去管理。在Node的進程管理之外,還需要用監聽進程數量或監聽日志的方式確 保整個系統的穩定性,即使主進程出錯退出,也能及時得到監控警報,使得開發者可以及時處 理故障。

第10章 測試

測試是應用或者系統最重要的質量保證手段。有單元測試實踐的項目,必然對代碼的粒度和 層次都掌握得較好。單元測試能夠保證項目每個局部的正確性,也能夠在項目迭代過程中很好地 監督和反饋迭代質量。如果沒有單元測試,就如同黑夜里沒有秉燭的行走。

對于性能,在編碼過程中一定存在部分感性認知,與實際情況有部分偏差,而性能測試則能 很好地斧正這種差異。

第11章 產品化


一般而言,決定用一項技術進行產品開發時,只有最早期是與這門技術完全相關的。隨著時 間的遷移,要解決的已經不是原來的問題了,一門技術只能在一定層面上發揮出它的優勢來。用 Node也是一樣,隨著開發的進展、涉及層面的增多,我們看到在產品的角度要解決的問題依然是 大部分技術都要解決的問題。我們希望讀者能夠將Node納入到新的層面上進行考慮,使它更適應 產品,在產品中發揮出更大的優勢來。

擴展

思維導圖能比較清晰的還原整本書的知識結構體系,如果你還沒用看過這本書,可以按照這個思維導圖的思路快速預習一遍,提高學習效率。學習新事物總容易遺忘,我比較喜歡在看書的時候用思維導圖做些記錄,便于自己后期復習,如果你已經看過了這本書,也建議你收藏復習。如果你有神馬建議或則想法,歡迎留言或加我微信交流:646321933

《深入淺出Node.js》PDF

思維導圖下載地址

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/108067.html

相關文章

  • 精讀《你不知道的javascript(中卷)》

    摘要:強制類型轉換本章介紹了的數據類型之間的轉換即強制類型轉換包括顯式和隱式。強制類型轉換常常為人詬病但實際上很多時候它們是非常有用的。隱式強制類型轉換則沒有那么明顯是其他操作的副作用。在處理強制類型轉換的時候要十分小心尤其是隱式強制類型轉換。 前言 《你不知道的 javascript》是一個前端學習必讀的系列,讓不求甚解的JavaScript開發者迎難而上,深入語言內部,弄清楚JavaSc...

    李世贊 評論0 收藏0
  • 如何機制地回答瀏覽器兼容性問題

    摘要:前言有過面試經驗的同學應該都被問過瀏覽器兼容性的問題,對于面試官的問題,常常猝不及防,因為通常他們都是這么問的。來談談瀏覽器兼容的問題吧,你對瀏覽器的兼容性有了解過嗎,那么如何才是我們正確回答這個問題的姿勢呢。 前言 有過面試經驗的同學應該都被問過瀏覽器兼容性的問題,對于面試官的問題,常常猝不及防,因為通常他們都是這么問的。來談談瀏覽器兼容的問題吧,你對瀏覽器的兼容性有了解過嗎,那么如...

    leanote 評論0 收藏0
  • 如何機制地回答瀏覽器兼容性問題

    摘要:前言有過面試經驗的同學應該都被問過瀏覽器兼容性的問題,對于面試官的問題,常常猝不及防,因為通常他們都是這么問的。來談談瀏覽器兼容的問題吧,你對瀏覽器的兼容性有了解過嗎,那么如何才是我們正確回答這個問題的姿勢呢。 前言 有過面試經驗的同學應該都被問過瀏覽器兼容性的問題,對于面試官的問題,常常猝不及防,因為通常他們都是這么問的。來談談瀏覽器兼容的問題吧,你對瀏覽器的兼容性有了解過嗎,那么如...

    Rindia 評論0 收藏0
  • javascript 垃圾回收算法

    摘要:它將堆內存一分為二每一部分空間稱為。以的垃圾回收堆內存為例做一次小的垃圾回收需要毫秒以上做一次非增量式的垃圾回收甚至要秒以上。這是垃圾回收中引起線程暫停執行的時間在這樣的時間花銷下應用的性能和響應能力都會直線下降。 我們通常理解的 javascript 垃圾回收機制都停留在表面,會釋放不被引用變量內存,最近在讀《深入淺出node.js》的書,詳細了解了下 v8 垃圾回收的算法,記錄了一...

    simon_chen 評論0 收藏0
  • 精讀《如何利用 Nodejs 監聽文件夾》

    摘要:引言本期精讀的文章是,探討如何監聽文件的變化。概述使用使用內置函數似乎可以解決問題但你可能會發現這個回調執行有一定延遲,因為是通過輪詢檢測文件變化的,它并不能實時作出反饋,而且只能監聽一個文件,存在效率問題。 1 引言 本期精讀的文章是:How to Watch for Files Changes in Node.js,探討如何監聽文件的變化。 如果想使用現成的庫,推薦 chokida...

    李濤 評論0 收藏0

發表評論

0條評論

codergarden

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<