如何封裝Node.js和前端通用的模塊

轉自:《如何封裝Node.js和前端通用的模塊》

在Node.js中對模塊載入和執行進行了包裝,使得模塊文件中的變量在一個閉包中,不會污染全局變量,和他人衝突。

前端模塊通常是我們開發人員爲了避免和他人衝突才把模塊代碼放置在一個閉包中。

如何封裝Node.js和前端通用的模塊,我們可以參考Underscore.js 實現,他就是一個Node.js和前端通用的功能函數模塊,查看代碼:

通過判斷exports是否存在來決定將局部變量 _ 賦值給exports,向後兼容舊的require() API,如果在瀏覽器中,通過一個字符串標識符“_”作爲一個全局對象;完整的閉包如下:

通過function定義構建了一個閉包,call(this)是將function在this對象下調用,以避免內部變量污染到全局作用域。瀏覽器中,this指向的是全局對象(window對象),將“_”變量賦在全局對象上“root._”,以供外部調用。

和Underscore.js 類似的Lo-Dash,也是使用了類似的方案,只是兼容了AMD模塊載入的兼容:

再來看看Moment.js的封裝閉包主要代碼:

從上面的幾個例子可以看出,在封裝Node.js和前端通用的模塊時,可以使用以下邏輯:

即,如果exports對象存在,則將局部變量裝載在exports對象上,如果不存在,則裝載在全局對象上。如果加上ADM規範的兼容性,那麼多加一句判斷:

發佈了35 篇原創文章 · 獲贊 3 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章