gpt4 book ai didi

javascript - 你应该将 IIFE 与 RequireJS 一起使用吗

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:45:57 34 4
gpt4 key购买 nike

似乎如果你正在使用 RequireJS 并且你使用 definerequire,那么使用 IIFE 也没有意义,因为每个模块已经包装在 define/require 中。是这样吗?

换句话说,这段代码是否

define(['app'], function(app)
{
app.run();
});

有任何区别/优势
(function() { 

define(['app'], function(app)
{
app.run();
});

})();

最佳答案

通常,您不需要将 IIFE 与 RequireJS 一起使用,但有时您应该这样做。

如果您使用通常的 define([... deps ...], function (...) {...}) 格式,那么您只是阅读 define 来自全局空间,您所做的所有其他操作都封装在您传递给 define 的函数中。无论有无 IIFE,您都可以泄露您想泄露的内容,并保密您想要保密的内容。

如果您正在编写希望能够在使用和不使用 RequireJS 的情况下运行的代码,那么通常需要 IIFE。例如,这个:

(function () {
'use strict';
function factory () {

// Build our module...

return something;
}

if (typeof define === 'function' && define.amd)
define([], factory); // AMD environment: call define.
else
window.Foo = factory(); // Otherwise, leak into the global space.
})();

流行的库(例如 jQuery)通常有这样的代码,允许将它们与 RequireJS(或其他 AMD 加载器)和 script 元素一起使用。这是非常普遍的。使用 IIFE 允许将 factory 函数保留在全局空间之外。

关于javascript - 你应该将 IIFE 与 RequireJS 一起使用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27050433/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com