這篇文章主要介紹了node模塊機制與異步處理詳解的相關資料,需要的朋友可以參考下
1.模塊機制
commonJS模塊機制出現的目的是為了構建js在web服務器,桌面程序,瀏覽器等方面形成生態系統。而node js就是這種規范的一種實現,用requird來引入其他文件,同樣,npm也遵循了commonJS定義的包規范,從而形成了一套完整的生態系統。
模塊定義并導出
例如有如下一個名為circle.js的文件
exports.getName = function(name) {
return name
}
模塊載入
var circle = require('/circle.js')
console.log(circle.getName('WPY'))
模塊加載策略
node模塊主要可以分為兩類:
原生模塊和自定義模塊,所謂原生模塊就是node自己定義的模塊,例如HTTP,fs模塊,此類模塊加載速度最快。
還有一類是自定義模塊,包括包模塊,和我們自己定義的文件。無論是原生模塊還是自定義模塊在第一次加載后都會被node緩存,所以第二次請求時是不會有開銷的。
原生模塊加載:
require()方法在解析文件名之后,最優先在模塊緩存中查找,然后在node的原生模塊中查找
從文件加載
module.path 對于每一個被加載的文件模塊,在創建這個模塊對象的時候都會有一個paths屬性。其路徑指向引入模塊的路徑。
在請求絕對路徑模塊時,不會去遍歷node_module加載速度最快。
異步編程
高介函數
高介函數是將函數作為參數,或者作為返回值的函數。
function foo(X) {
return function() {
return x
}
}
NODE帶來的最大特性莫過于機遇事件驅動的非阻塞IO。
異步編程解決方案
1.事件發布/訂閱模式
事件監聽器模式是廣泛應用于異步編程,是回調函數的時間化,又稱發布/訂閱模式。
//訂閱
emitter.on("event1", function(message){
console.log(message)
})
//發布
emitter.emit("event1", "I am message")
2.Promise模式
promise對象具有三種狀態,未完成態,完成態,失敗態。
promise對象要具有then方法,對于then 方法有以下幾點要求
1.接受完成態,錯誤態的回調方法。
2.只接受function,其余對象將被忽略
3.繼續返回promise對象,以實現鏈式調用