簡體   English   中英

我應該如何使用模塊模式處理一個較長的JavaScript文件?

[英]How should I go about a long JavaScript file using the module pattern?

我正在學習JavaScript中的設計模式,並且將使用模塊模式。 我為兩件事感到困惑。

1-如果我要創建插件,則可以使用模塊模式,並具有私有和公共方法/變量。 但是,如果我有完整的JavaScript文件,則不需要私有和公共方法,因為程序的一部分與另一部分無關。 那么私有和公共方法的意義何在?

2-由於JavaScript文件非常長,我應該嵌套模塊嗎? 我應該如何處理完整的JavaScript文件?

(1)

加載所有Javascript文件后,所有文件中的所有腳本就像它們在一個文件中一樣。 一個文件中的腳本可以訪問(讀取,更新,刪除)其他文件中的全局變量 對此有很多問題,您可以輕松地進行搜索。

當然,“程序的一部分與另一部分無關”,但是如果您與許多成員組成團隊,則每個成員都在系統的一部分(或在某些情況下是文件)上工作。 這樣一來,一個人就有可能不小心更改了另一個人創建的變量。 這類錯誤很容易檢測。 但是,如果可以對腳本進行模塊化,則可以完全避免此類錯誤。

(2)

你可以慢點。 在編寫滿足完整要求的代碼時,請嘗試識別可分離為模塊(甚至嵌套模塊)的代碼部分。 他們將它們放入其他文件。

在這樣做時,您應該富有創造力和謹慎。 代碼可能會快速增長,並且事情很快就會失控。

JavaScript已經發展了。 ES6-具有自己的模塊,如果沒有,ES6-沒有真正的理由不升級。 因此,無需使用舊模式來“模擬”模塊。 例:

// Old style.
var myModule = function() {
  var privateVar;
  function getPrivateVar() { return privateVar; }
  return {getPrivateVar: getPrivateVar};
}();

console.log(myModule.getPrivateVar());

// New style.
let privateVar;
function getPrivateVar() { return privateVar; }
export {privateVar};

// Using it
import {getPrivateVar} from './myModule';
console.log(getPrivateVar());

在上面, privateVar定義為模塊(文件)私有。 無需通過將其包裝在IIFE中來使其私有。 我們不是將導出本身作為單個返回對象的屬性來處理,而是使用ES6導出機制來顯式導出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM