如何判断javascript库是否支持AMD

前端之家收集整理的这篇文章主要介绍了如何判断javascript库是否支持AMD前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我开始学习如何使用requirejs并将其与其他一些可用的 javascript库结合起来.据我所知,你需要填充所有不是 Asynchronous module definition compatible (AMD)的库,但除了在库代码搜索“require”之外,是否有更简单的方法来确定哪些库支持AMD哪些库不支持?作为一个例子,我知道jquery支持AMD,但jqueryui没有,我只知道这是因为“有人告诉我”.

解决方法

这就是jQuery如何声明它的AMD.这只是一堆if语句.除非库有一些库.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 ._ .define,这是一个包含已加载模块的名称 – 定义映射的对象.

例如,如果我将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相关文章