node模組機制與非同步處理詳解,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對象,以實現鏈式調用
您可能感興趣的文章:
- Nodejs非同步回調的優雅處理方法
- Nodejs極簡入門教程(一):模組機制
- 深入淺析NodeJs並發非同步回調處理