gpt4 book ai didi

javascript - 如何判断一个 JavaScript 库是否支持 AMD

转载 作者:数据小太阳 更新时间:2023-10-29 04:44:20 27 4
gpt4 key购买 nike

所以我开始学习如何使用 requirejs 并将其与其他一些可用的 javascript 库结合使用。据我了解,您需要填充所有不是 Asynchronous module definition compatible (AMD) 的库。 ,但除了在库代码中搜索“require”之外,是否有更简单的方法来确定哪些库支持 AMD,哪些不支持?例如,我知道 jquery 支持 AMD 但 jqueryui 不支持,我只知道这一点是因为“有人告诉我”。

最佳答案

这就是 jQuery 声明其 AMD 的方式。这只是一堆 if 语句。除非库有一些 library.AMD === true,否则无法从库本身进行检查。

if ( typeof module === "object" && module && typeof module.exports === "object" ) {
module.exports = jQuery;
} else {
window.jQuery = window.$ = jQuery;
if ( typeof define === "function" && define.amd ) {
define( "jquery", [], function () { return jQuery; } );
}
}

但是,有一种方法可以检查已经加载的模块。 This answer声明您可以检查 require.s.contexts._.defined,这是一个包含已加载模块的名称定义映射的对象。

例如,如果我将 jQuery(默认情况下具有 AMD)加载到也具有 RequireJS 的页面中,则该对象中将存在一个 jquery 属性,并且包含与全局对象相同的 jQuery 对象。然后你可以比较。以下将返回 true:

require.s.contexts._.defined.jquery === jQuery
require.s.contexts._.defined.jquery === $

但是,这假设您知道模块名称和/或有一个全局变量可供比较。这可能不适用于所有情况。例如,jQuery UI 不仅仅是一大段代码。它是位于 jquery-ui.js 下的一堆插件。有可能将它们一起命名或为每个小部件命名一个模块。 jQuery UI 甚至没有全局。

关于javascript - 如何判断一个 JavaScript 库是否支持 AMD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20182196/

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