因此,我已经开始学习如何使用requirejs并将其与其他一些可用的JavaScript库结合使用。据我了解,你需要清除所有不是Asynchronous module definition compatible (AMD)的库,但除了通过库代码搜索“require”之外,是否有更简单的方法来确定哪些库支持AMD,哪些不支持AMD?举个例子,我知道jquery支持AMD,但jqueryui不支持,我只知道这是因为“有人告诉我”。如何判断一个JavaScript库是否支持AMD
回答
这是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甚至没有全局的。
你会寻找来源AMD formatdefine()
电话,他们通常有三种类型:
- 没有AMD模块定义,在这里你必须配置RequireJS垫片;
- 可选的AMD支持,其中底部全局变量中的
define()
依赖关系通常会发生一些嗅探; - 一流的AMD模块,其中所有内容都包含在对
define()
的调用中。
这是很好的注意,如果你试图通过错误的垫片的AMD模块,或者加载脚本作为AMD模块,永远不会调用define()
创建一个,你会得到一个错误。
谢谢你澄清,菲利普。只是为了好奇,我做了一个快速测试,看看如果我擦亮AMD兼容的库,或者反之亦然,但是我可以看到我没有在控制台日志中找到任何东西。你有一个简短的例子来说明这一点吗? –
- 1. 如何判断是否支持File.symlink
- 2. 如何判断一个对象是否支持标量比较?
- 3. 如何在C#中判断系统是否支持触摸
- 4. 如何判断HTML5视频标签源是否支持CORS?
- 5. 如何判断此iPhone是否支持Game Center挑战?
- 6. 如何判断我的Web主机是否支持https cUrl?
- 7. 如何正确判断浏览器是否支持border-image?
- 8. 如何判断一个javascript变量是否为函数
- 9. 如何判断一个JSON对象是否是一个数组?
- 10. 如何判断一个函数是否是一个类?
- 11. javascript如何判断一个数字是否是另一个数字的倍数
- 12. 如何判断MicrosoftAjax JavaScript库是否未被使用?
- 13. 如何判断一个git回购是否是一面镜子?
- 14. AMD xop支持
- 15. mustache.js是否支持这样的表情判断?
- 16. 如何判断一个类是否来自另一个类
- 17. 如何判断某个字母是否在字符串中 - javascript
- 18. Javascript如何判断两个对象是否相同?
- 19. 如何判断计算机是否支持OpenGL 2.0? (我想写着色器)
- 20. 如何判断IOS设备是否仅在硬件中支持48kHz
- 21. 如何判断浏览器是否支持基于用户代理的Silverlight?
- 22. 如何判断一个Type是否是静态类?
- 23. 如何判断Request.Form中的值是否是一个数字? (C#)
- 24. 如何判断一个URL是否是Intranet网址?
- 25. 如何判断一个字符串是否是网址?
- 26. 资源加载:如何判断它是否是一个目录
- 27. 如何判断一个DLL是否是ComVisible?
- 28. 如何判断一个元素是否是jquery-ui小部件?
- 29. 如何判断ParameterInfo类型是否是一个集合?
- 30. 如何判断一个类是否是java接口的实现
当你谈论AMD时,你可能会提到人们,你不是在谈论CPU /视频半导体公司,但我猜你正在谈论[异步模块定义](http:// gregfranko。 COM /博客/注册最jQueryUI的-插件-工厂作为-AN-AMD-模块/)。 – jfriend00
@ jfriend00,[Asynchronous_module_definition](http://en.wikipedia.org/wiki/Asynchronous_module_definition),你知道'OP'是什么意思,不是吗? –
我不知道他们的意思。我以为他们在问AMD显卡的兼容性。只有当我在Google上搜索时,我才能找到他们的意思。我会自己编辑这个问题,以确保其他读者清楚。 – jfriend00