微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何判断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甚至没有全局.

原文地址:https://www.jb51.cc/js/157479.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐