成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

精讀《深入淺出Node.js》

codergarden / 2824人閱讀

摘要:從社區(qū)和過(guò)往的經(jīng)驗(yàn)而言異步編程的難題已經(jīng)基本解決無(wú)論是通過(guò)事件還是通過(guò)模式或者流程控制庫(kù)。本章主要介紹了主流的幾種異步編程解決方案這是目前中主要使用的方案。最后因?yàn)槿藗兛偸橇?xí)慣性地以線性的方式進(jìn)行思考以致異步編程相對(duì)較為難以掌握。

前言

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

第1章 Node簡(jiǎn)介

第2章 模塊機(jī)制


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

第3章 異步I/O


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

第4章 異步編程


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

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

最后,因?yàn)槿藗兛偸橇?xí)慣性地以線性的方式進(jìn)行思考,以致異步編程相對(duì)較為難以掌握。這 個(gè)世界以異步運(yùn)行的本質(zhì)是不會(huì)因?yàn)榇蠹揖€性思維的慣性而改變。就像日出月落不會(huì)因?yàn)槟愕男?情而改變其自有的運(yùn)行軌跡。

第5章 內(nèi)存控制

Node將JavaScript的主要應(yīng)用場(chǎng)景擴(kuò)展到了服務(wù)器端,相應(yīng)要考慮的細(xì)節(jié)也與瀏覽器端不同, 需要更嚴(yán)謹(jǐn)?shù)貫槊恳环葙Y源作出安排??偟膩?lái)說(shuō),內(nèi)存在Node中不能隨心所欲地使用,但也不是 完全不擅長(zhǎng)。本章介紹了內(nèi)存的各種限制,希望讀者可以在使用中規(guī)避禁忌,與生態(tài)系統(tǒng)中的各 種軟件搭配,發(fā)揮Node的長(zhǎng)處。

第6章 理解Buffer


體驗(yàn)過(guò)JavaScript友好的字符串操作后,有些開(kāi)發(fā)者可能會(huì)形成思維定勢(shì),將Buffer當(dāng)做字 符串來(lái)理解。但字符串與Buffer之間有實(shí)質(zhì)上的差異,即Buffer是二進(jìn)制數(shù)據(jù),字符串與Buffer 之間存在編碼關(guān)系。因此,理解Buffer的諸多細(xì)節(jié)十分必要,對(duì)于如何高效處理二進(jìn)制數(shù)據(jù)十 分有用。

第7章 網(wǎng)絡(luò)編程


Node基于事件驅(qū)動(dòng)和非阻塞設(shè)計(jì),在分布式環(huán)境中尤其能發(fā)揮出它的特長(zhǎng),基于事件驅(qū)動(dòng)可 以實(shí)現(xiàn)與大量的客戶端進(jìn)行連接,非阻塞設(shè)計(jì)則讓它可以更好地提升網(wǎng)絡(luò)的響應(yīng)吞吐。Node提供 了相對(duì)底層的網(wǎng)絡(luò)調(diào)用,以及基于事件的編程接口,使得開(kāi)發(fā)者在這些模塊上十分輕松地構(gòu)建網(wǎng) 絡(luò)應(yīng)用。下一章我們將在本章的基礎(chǔ)上探討具體的Web應(yīng)用。

第8章 構(gòu)建Web應(yīng)用


本章涉及的內(nèi)容較為豐富,在Web應(yīng)用的整個(gè)構(gòu)建過(guò)程中,從處理請(qǐng)求到響應(yīng)請(qǐng)求的整個(gè)過(guò) 程都有原理性闡述,整理本章細(xì)節(jié)就可以完成一個(gè)功能完備的Web開(kāi)發(fā)框架。過(guò)去的各種Web技 術(shù),隨著框架和庫(kù)的成型,開(kāi)發(fā)者往往迷糊地知道應(yīng)用框架和庫(kù),卻不知道細(xì)節(jié)的實(shí)現(xiàn),這好比 沒(méi)有地圖卻在野地里行進(jìn)。本章的內(nèi)容希望能為Node開(kāi)發(fā)者帶來(lái)地圖似的啟發(fā),在開(kāi)發(fā)Web應(yīng)用 時(shí)能夠心有輪廓,明了細(xì)微。

現(xiàn)在知名和成熟的Web框架有Connect、Express等,本章中的內(nèi)容在這些框架中都有實(shí)現(xiàn), 因?yàn)樾形牡脑?本章中的代碼實(shí)現(xiàn)得較為粗糙,實(shí)際使用請(qǐng)使用這些成熟的框架。

第9章 玩轉(zhuǎn)進(jìn)程

盡管Node從單線程的角度來(lái)講它有夠脆弱的:既不能充分利用多核CPU資源,穩(wěn)定性也無(wú) 法得到保障。但是群體的力量是強(qiáng)大的,通過(guò)簡(jiǎn)單的主從模式,就可以將應(yīng)用的質(zhì)量提升一個(gè) 檔次。在實(shí)際的復(fù)雜業(yè)務(wù)中,我們可能要啟動(dòng)很多子進(jìn)程來(lái)處理任務(wù),結(jié)構(gòu)甚至遠(yuǎn)比主從模式 復(fù)雜,但是每個(gè)子進(jìn)程應(yīng)當(dāng)是簡(jiǎn)單到只做好一件事,然后通過(guò)進(jìn)程間通信技術(shù)將它們連接起來(lái) 即可。這符合Unix的設(shè)計(jì)理念,每個(gè)進(jìn)程只做一件事,并做好一件事,將復(fù)雜分解為簡(jiǎn)單,將 簡(jiǎn)單組合成強(qiáng)大。

盡管通過(guò) child_process 模塊可以大幅提升Node的穩(wěn)定性,但是一旦主進(jìn)程出現(xiàn)問(wèn)題, 所 有子進(jìn)程將會(huì)失去管理。在Node的進(jìn)程管理之外,還需要用監(jiān)聽(tīng)進(jìn)程數(shù)量或監(jiān)聽(tīng)日志的方式確 保整個(gè)系統(tǒng)的穩(wěn)定性,即使主進(jìn)程出錯(cuò)退出,也能及時(shí)得到監(jiān)控警報(bào),使得開(kāi)發(fā)者可以及時(shí)處 理故障。

第10章 測(cè)試

測(cè)試是應(yīng)用或者系統(tǒng)最重要的質(zhì)量保證手段。有單元測(cè)試實(shí)踐的項(xiàng)目,必然對(duì)代碼的粒度和 層次都掌握得較好。單元測(cè)試能夠保證項(xiàng)目每個(gè)局部的正確性,也能夠在項(xiàng)目迭代過(guò)程中很好地 監(jiān)督和反饋迭代質(zhì)量。如果沒(méi)有單元測(cè)試,就如同黑夜里沒(méi)有秉燭的行走。

對(duì)于性能,在編碼過(guò)程中一定存在部分感性認(rèn)知,與實(shí)際情況有部分偏差,而性能測(cè)試則能 很好地斧正這種差異。

第11章 產(chǎn)品化


一般而言,決定用一項(xiàng)技術(shù)進(jìn)行產(chǎn)品開(kāi)發(fā)時(shí),只有最早期是與這門(mén)技術(shù)完全相關(guān)的。隨著時(shí) 間的遷移,要解決的已經(jīng)不是原來(lái)的問(wèn)題了,一門(mén)技術(shù)只能在一定層面上發(fā)揮出它的優(yōu)勢(shì)來(lái)。用 Node也是一樣,隨著開(kāi)發(fā)的進(jìn)展、涉及層面的增多,我們看到在產(chǎn)品的角度要解決的問(wèn)題依然是 大部分技術(shù)都要解決的問(wèn)題。我們希望讀者能夠?qū)ode納入到新的層面上進(jìn)行考慮,使它更適應(yīng) 產(chǎn)品,在產(chǎn)品中發(fā)揮出更大的優(yōu)勢(shì)來(lái)。

擴(kuò)展

思維導(dǎo)圖能比較清晰的還原整本書(shū)的知識(shí)結(jié)構(gòu)體系,如果你還沒(méi)用看過(guò)這本書(shū),可以按照這個(gè)思維導(dǎo)圖的思路快速預(yù)習(xí)一遍,提高學(xué)習(xí)效率。學(xué)習(xí)新事物總?cè)菀走z忘,我比較喜歡在看書(shū)的時(shí)候用思維導(dǎo)圖做些記錄,便于自己后期復(fù)習(xí),如果你已經(jīng)看過(guò)了這本書(shū),也建議你收藏復(fù)習(xí)。如果你有神馬建議或則想法,歡迎留言或加我微信交流:646321933

《深入淺出Node.js》PDF

思維導(dǎo)圖下載地址

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108067.html

相關(guān)文章

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

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

    李世贊 評(píng)論0 收藏0
  • 如何機(jī)制地回答瀏覽器兼容性問(wèn)題

    摘要:前言有過(guò)面試經(jīng)驗(yàn)的同學(xué)應(yīng)該都被問(wèn)過(guò)瀏覽器兼容性的問(wèn)題,對(duì)于面試官的問(wèn)題,常常猝不及防,因?yàn)橥ǔK麄兌际沁@么問(wèn)的。來(lái)談?wù)劄g覽器兼容的問(wèn)題吧,你對(duì)瀏覽器的兼容性有了解過(guò)嗎,那么如何才是我們正確回答這個(gè)問(wèn)題的姿勢(shì)呢。 前言 有過(guò)面試經(jīng)驗(yàn)的同學(xué)應(yīng)該都被問(wèn)過(guò)瀏覽器兼容性的問(wèn)題,對(duì)于面試官的問(wèn)題,常常猝不及防,因?yàn)橥ǔK麄兌际沁@么問(wèn)的。來(lái)談?wù)劄g覽器兼容的問(wèn)題吧,你對(duì)瀏覽器的兼容性有了解過(guò)嗎,那么如...

    leanote 評(píng)論0 收藏0
  • 如何機(jī)制地回答瀏覽器兼容性問(wèn)題

    摘要:前言有過(guò)面試經(jīng)驗(yàn)的同學(xué)應(yīng)該都被問(wèn)過(guò)瀏覽器兼容性的問(wèn)題,對(duì)于面試官的問(wèn)題,常常猝不及防,因?yàn)橥ǔK麄兌际沁@么問(wèn)的。來(lái)談?wù)劄g覽器兼容的問(wèn)題吧,你對(duì)瀏覽器的兼容性有了解過(guò)嗎,那么如何才是我們正確回答這個(gè)問(wèn)題的姿勢(shì)呢。 前言 有過(guò)面試經(jīng)驗(yàn)的同學(xué)應(yīng)該都被問(wèn)過(guò)瀏覽器兼容性的問(wèn)題,對(duì)于面試官的問(wèn)題,常常猝不及防,因?yàn)橥ǔK麄兌际沁@么問(wèn)的。來(lái)談?wù)劄g覽器兼容的問(wèn)題吧,你對(duì)瀏覽器的兼容性有了解過(guò)嗎,那么如...

    Rindia 評(píng)論0 收藏0
  • javascript 垃圾回收算法

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

    simon_chen 評(píng)論0 收藏0
  • 精讀《如何利用 Nodejs 監(jiān)聽(tīng)文件夾》

    摘要:引言本期精讀的文章是,探討如何監(jiān)聽(tīng)文件的變化。概述使用使用內(nèi)置函數(shù)似乎可以解決問(wèn)題但你可能會(huì)發(fā)現(xiàn)這個(gè)回調(diào)執(zhí)行有一定延遲,因?yàn)槭峭ㄟ^(guò)輪詢檢測(cè)文件變化的,它并不能實(shí)時(shí)作出反饋,而且只能監(jiān)聽(tīng)一個(gè)文件,存在效率問(wèn)題。 1 引言 本期精讀的文章是:How to Watch for Files Changes in Node.js,探討如何監(jiān)聽(tīng)文件的變化。 如果想使用現(xiàn)成的庫(kù),推薦 chokida...

    李濤 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<