我应该如何在 JS 中使用显示模块模式、传递引用并避免加载顺序问题?

How should I be using the revealing module pattern in JS, passing in references, and avoiding load order issues?

我一直在试验 Javascript 中的(我理解的)模块模式(或揭示模块模式)。目前,我的主要 objective 是代码组织和清理项目中的全局 space,但我相信还有许多其他好处。

我一直遵循的基本模式大致如下所示:

var myThing = (function(w, $) {

    var priv = {
        // ... private methods
    };
    var public = {
        // ... public methods
    };

    return public;

})(window, jQuery);

我认为这样做的主要好处是通过隐藏 obj 的内部方法和属性,代码更清晰,结构更好。还有其他显而易见但我没有看到的好处吗?我真的很想知道什么时候以及什么时候不使用这种模式。

问题 1 : 所以我喜欢的一件事是能够将 w 和 $ 作为 shorthand 引用 window 和 jQuery,但是当我尝试向其中添加另一个库时,它似乎不起作用(特别是 velocity.js)。

编辑:因为我包含了 jQuery,velocity 将其自身附加到全局 jQuery obj,导入是针对 velocity 不是的全局变量,因此我无法将其导入同理

问题 2 :其次,我在某处读到,无论加载顺序如何,都可以使这种模式工作,这是真的吗?如果是,应该如何修改?

注意: 重要的是,我试图理解这种模式以及它的可能性,而不是诸如实现 require 或 borwserify 之类的替代。

因此,经过反复研究和一些研究,我创建了以下小模板,我将其用作使用揭示模块模式的一般起点。

https://gist.github.com/Pushplaybang/39ce46ec5b3d5502bb0c

加载速度的问题只是我调用对象不正确。