【发布时间】:2015-09-09 22:06:23
【问题描述】:
我见过下面的 IIFE 模式(它有名字吗?),根据this 博客文章,它可以防止其他插件,改进缩小并具有tiny 性能优势。我还亲自为 IIFE 添加了一个命名空间:
(function (MyNamespace, $, window, document, undefined) {
"use strict";
// My Code
})(window.MyNamespace = window.MyNamespace || {}, window.jQuery, window, document);
我已经在每个 JavaScript 文件中看到了这种模式。连接和缩小之后呢?如何确保我的代码只包含上述 IIFE 中的 一个? NPM、Gulp/Grunt 等工具在这方面有帮助吗?有处理这种情况的标准方法吗?
【问题讨论】:
-
这对性能的影响很小,由于多次使用该模式,您遇到了什么问题?
-
这是您必须在每个文件中复制的代码。在连接和缩小之后,您只需要它的一份副本,这将进一步帮助缩小。这似乎是一个相当普遍的模式,我希望有人解决了这个问题。
-
你在什么状态下运行你的构建工具?最后一步是在观看还是更多?
-
如果您使用的是构建工具,请使用该工具将您的文件(没有此代码块)包含在一个副本中。 Knockout for example 这样做。
-
感谢@JamesThorpe 提供的示例。我还碰巧在jQuery 上观看了 Paul Irish 的视频,发现他们采取了类似的方法。
标签: javascript gruntjs npm gulp iife