首頁  >  文章  >  web前端  >  node模組機制與非同步處理詳解_node.js

node模組機制與非同步處理詳解_node.js

WBOY
WBOY原創
2016-05-16 15:10:432061瀏覽

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對象,以實現鍊式呼叫

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn