所以我开始学习如何使用requirejs并将其与其他javascript库相结合。据我了解,您需要对所有不兼容异步模块定义(AMD)的库进行shim,但除了搜索库代码中的“require”外,还有更简单的方法来确定哪些库支持AMD和哪些库不支持吗?例如,我知道jquery支持AMD,但jqueryui不支持,我只知道这是因为“有人告诉我”。
所以我开始学习如何使用requirejs并将其与其他javascript库相结合。据我了解,您需要对所有不兼容异步模块定义(AMD)的库进行shim,但除了搜索库代码中的“require”外,还有更简单的方法来确定哪些库支持AMD和哪些库不支持吗?例如,我知道jquery支持AMD,但jqueryui不支持,我只知道这是因为“有人告诉我”。
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; } );
}
}
require.s.contexts._.defined
,它是一个包含已加载模块名称和定义映射的对象。jquery
属性,并且包含与全局相同的jQuery对象。然后您可以进行比较。以下内容将返回true
:require.s.contexts._.defined.jquery === jQuery
require.s.contexts._.defined.jquery === $
jquery-ui.js
。它们可能被命名为一个整体,也可能每个小部件都对应一个模块。jQuery UI 甚至没有一个全局变量。define()
调用,通常有以下三种情况:
define()
依赖嗅探;define()
调用中。define()
创建的脚本作为AMD模块,您将会收到错误提示。
OP
意味着什么,对吧? - The Alpha