Javascript 带有Browserify模块的参数

Javascript 带有Browserify模块的参数,javascript,module,browserify,Javascript,Module,Browserify,我使用具有Browserify的模块,如下所示: module.exports = (function() { 'use strict'; var hide = function(elementId) { var element = document.getElementById(elementId); element.style.opacity = 0; }; return hide; }()); 当我在我的模块中使用“do

我使用具有Browserify的模块,如下所示:

module.exports = (function() {

'use strict';

    var hide = function(elementId) {

        var element = document.getElementById(elementId);
        element.style.opacity = 0;

    };

    return hide;

}());
当我在我的模块中使用“document”时,我应该这样进入争论吗

文档、窗口、导航器、XMLHttpRequest的Idem

module.exports = (function(document) {

    ...

}(document));

无论答案是什么,您能解释一下原因吗?

浏览将每个模块包装在一个函数中。额外的包装没有任何优势。将文档或任何全局文件作为参数传递也不会赢得任何东西。您可以编写浏览器模块,就像它们位于节点模块的位置一样。只需将每个文件视为在第一次调用时调用的一个大函数
require

,因此我直接编写以下内容:

module.exports = function(elementId) {

    'use strict';

    var element = document.getElementById(elementId);
    element.style.opacity = 0;

}
如果我想返回一个具有许多公共方法(显示模块模式)的对象,我必须这样做吗?我必须通过文件吗

module.exports = (function() {

    var on = function() {

    };

    var off = function() {

    };

    return {
        on: on,
        off: off
    };

})();

如果你有两个问题,最好同时问两个独立的问题。