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导出机制来显式导出它。

相关问题