0

我正在學習JavaScript中的設計模式,我將使用模塊模式。我對兩件事感到困惑。如何使用模塊模式來處理長JavaScript文件?

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

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

+0

有人可以解釋爲什麼2人投票結束這個問題「因爲它是基於意見」。我要求解釋。我不認爲這是基於意見... – Horay

+0

我不明白你的意思是「插件」。什麼插件? –

回答

0

(1)

當所有的JavaScript文件被加載,在所有文件中的所有腳本,就像它們在一個文件中。一個文件中的腳本可以訪問(讀取,更新,刪除)全局變量在其他文件中。有很多這方面的問題,你可以輕鬆搜索這些。

當然,「程序的一部分與另一部分無關」,但是如果你與許多成員組成團隊,每個人都在系統的一部分(或在某些情況下是文件)工作, 。那麼,一個人有可能意外地改變了另一個人創造的變量。這些錯誤很容易被發現。但是,如果你可以模塊化你的腳本,你可以完全避免這些錯誤。 (2)

你可以慢下來。在編寫代碼以完成需求時,嘗試識別可以分離到模塊(甚至嵌套模塊)的代碼部分。他們把它們放到其他文件中。

這樣做你應該富有創造力和小心。代碼可能增長非常快,並且事情很快就會失控。

0

JavaScript已經開始。 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導出機制來顯式導出它。

相關問題