摘要:異步編程高介函數(shù)高介函數(shù)是將函數(shù)作為參數(shù),或者作為返回值的函數(shù)。異步編程解決方案事件發(fā)布訂閱模式事件監(jiān)聽(tīng)器模式是廣泛應(yīng)用于異步編程,是回調(diào)函數(shù)的時(shí)間化,又稱發(fā)布訂閱模式。
1.模塊機(jī)制
commonJS模塊機(jī)制出現(xiàn)的目的是為了構(gòu)建js在web服務(wù)器,桌面程序,瀏覽器等方面形成生態(tài)系統(tǒng)。而node js就是這種規(guī)范的一種實(shí)現(xiàn),用requird來(lái)引入其他文件,同樣,npm也遵循了commonJS定義的包規(guī)范,從而形成了一套完整的生態(tài)系統(tǒng)。
模塊定義并導(dǎo)出
例如有如下一個(gè)名為circle.js的文件
exports.getName = function(name) { return name }
模塊載入
var circle = require("/circle.js") console.log(circle.getName("WPY"))
模塊加載策略
node模塊主要可以分為兩類:
原生模塊和自定義模塊,所謂原生模塊就是node自己定義的模塊,例如HTTP,fs模塊,此類模塊加載速度最快。
還有一類是自定義模塊,包括包模塊,和我們自己定義的文件。無(wú)論是原生模塊還是自定義模塊在第一次加載后都會(huì)被node緩存,所以第二次請(qǐng)求時(shí)是不會(huì)有開(kāi)銷的。
原生模塊加載:
require()方法在解析文件名之后,最優(yōu)先在模塊緩存中查找,然后在node的原生模塊中查找
從文件加載
module.path 對(duì)于每一個(gè)被加載的文件模塊,在創(chuàng)建這個(gè)模塊對(duì)象的時(shí)候都會(huì)有一個(gè)paths屬性。其路徑指向引入模塊的路徑。
在請(qǐng)求絕對(duì)路徑模塊時(shí),不會(huì)去遍歷node_module加載速度最快。
高介函數(shù)
高介函數(shù)是將函數(shù)作為參數(shù),或者作為返回值的函數(shù)。
function foo(X) { return function() { return x } }
NODE帶來(lái)的最大特性莫過(guò)于機(jī)遇事件驅(qū)動(dòng)的非阻塞IO。
異步編程解決方案
1.事件發(fā)布/訂閱模式事件監(jiān)聽(tīng)器模式是廣泛應(yīng)用于異步編程,是回調(diào)函數(shù)的時(shí)間化,又稱發(fā)布/訂閱模式。
//訂閱
emitter.on("event1", function(message){ console.log(message) })
//發(fā)布
emitter.emit("event1", "I am message")2.Promise模式
promise對(duì)象具有三種狀態(tài),未完成態(tài),完成態(tài),失敗態(tài)。
promise對(duì)象要具有then方法,對(duì)于then 方法有以下幾點(diǎn)要求
1.接受完成態(tài),錯(cuò)誤態(tài)的回調(diào)方法。
2.只接受function,其余對(duì)象將被忽略
3.繼續(xù)返回promise對(duì)象,以實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用
next()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78879.html
摘要:回調(diào)函數(shù)是在異步操作完成后傳播其操作結(jié)果的函數(shù),總是用來(lái)替代同步操作的返回指令。下面的圖片顯示了中事件循環(huán)過(guò)程當(dāng)異步操作完成時(shí),執(zhí)行權(quán)就會(huì)交給這個(gè)異步操作開(kāi)始的地方,即回調(diào)函數(shù)。 本系列文章為《Node.js Design Patterns Second Edition》的原文翻譯和讀書(shū)筆記,在GitHub連載更新,同步翻譯版鏈接。 歡迎關(guān)注我的專欄,之后的博文將在專欄同步: Enc...
摘要:簡(jiǎn)介項(xiàng)目命名為就是一個(gè)服務(wù)器單純開(kāi)發(fā)一個(gè)服務(wù)器的想法,變成構(gòu)建網(wǎng)絡(luò)應(yīng)用的一個(gè)基本框架發(fā)展為一個(gè)強(qiáng)制不共享任何資源的單線程,單進(jìn)程系統(tǒng)。單線程弱點(diǎn)無(wú)法利用多核錯(cuò)誤會(huì)引起整個(gè)應(yīng)用退出,應(yīng)用的健壯性大量計(jì)算占用導(dǎo)致無(wú)法繼續(xù)調(diào)用異步。 NodeJs簡(jiǎn)介 Ryan Dahl項(xiàng)目命名為:web.js 就是一個(gè)Web服務(wù)器.單純開(kāi)發(fā)一個(gè)Web服務(wù)器的想法,變成構(gòu)建網(wǎng)絡(luò)應(yīng)用的一個(gè)基本框架.Node發(fā)展...
摘要:當(dāng)某個(gè)執(zhí)行完畢時(shí),將以時(shí)間的形式通知執(zhí)行操作的線程,線程執(zhí)行了這個(gè)事件的回調(diào)函數(shù)。為了處理異步,線程必須有事件循環(huán),不斷的檢查是否有未處理的時(shí)間。這種處理機(jī)制,稱為事件環(huán)機(jī)制。方面使用第三方模塊。 簡(jiǎn)介 V8引擎本身就是用于Chrome瀏覽器的JS解釋部分,但是Ryan Dahl,把V8搬到服務(wù)器,用于做服務(wù)器的軟件。Node是一個(gè)專注于實(shí)現(xiàn)高性能Web服務(wù)器優(yōu)化的專家,在遇到V8而誕...
摘要:概述本文主要介紹了我對(duì)的一些核心特性的理解,包括架構(gòu)特點(diǎn)機(jī)制核心模塊與簡(jiǎn)單應(yīng)用。在此期間,主線程繼續(xù)執(zhí)行其他任務(wù)。延續(xù)了瀏覽器端單線程,只用一個(gè)主線程執(zhí)行,不斷循環(huán)遍歷事件隊(duì)列,執(zhí)行事件。 原文地址在我的博客,轉(zhuǎn)載請(qǐng)注明來(lái)源,謝謝! node是在前端領(lǐng)域經(jīng)常看到的詞。node對(duì)于前端的重要性已經(jīng)不言而喻,掌握node也是作為合格的前端工程師一項(xiàng)基本功了。知道node、知道后端的一些東西...
摘要:這使我們的知道什么時(shí)候原始模塊被初始化,在初始化后執(zhí)行預(yù)初始化隊(duì)列的操作,之后清空預(yù)初始化隊(duì)列,再調(diào)用作為參數(shù)的回調(diào)函數(shù),以下為具體步驟把賦值給,表示預(yù)初始化已經(jīng)完成了。 本系列文章為《Node.js Design Patterns Second Edition》的原文翻譯和讀書(shū)筆記,在GitHub連載更新,同步翻譯版鏈接。 歡迎關(guān)注我的專欄,之后的博文將在專欄同步: Encount...
閱讀 713·2021-10-14 09:42
閱讀 1966·2021-09-22 15:04
閱讀 1571·2019-08-30 12:44
閱讀 2134·2019-08-29 13:29
閱讀 2730·2019-08-29 12:51
閱讀 542·2019-08-26 18:18
閱讀 698·2019-08-26 13:43
閱讀 2803·2019-08-26 13:38