0
如何将polyfill脚本包装为AMD模块并使用Modernizr和RequireJS有条件加载它?RequireJS:使用Modernizr有条件地加载填充物
(想通了,而我正在起草我的问题 - 张贴的答案别人试图做同样的事情)
如何将polyfill脚本包装为AMD模块并使用Modernizr和RequireJS有条件加载它?RequireJS:使用Modernizr有条件地加载填充物
(想通了,而我正在起草我的问题 - 张贴的答案别人试图做同样的事情)
我需要加载的填充工具是jquery-placeholder对于不支持输入占位符的浏览器。它不提供开箱即用的AMD支持。
首先,我把它包作为AMD模块是这样的:
define(['jquery'], function ($) {
(function(window, document, $) {
... polyfill ...
}(this, document, jQuery));
});
然后在main.js
我用Modernizr的有条件require()
的填充工具脚本:
require(['jquery', 'modernizr'], function ($, Modernizr) {
if (!Modernizr.input.placeholder) {
require(['jquery', 'placeholder'], function ($) {
$('#input').placeholder();
});
}
});
在你的榜样
你需要两倍的jQuery 。如果jQuery占位符是需要jQuery的唯一原因,那么在第一步中我只需要Modernizr而不是jQuery。同时使用[RequireJS shim](http://requirejs.org/docs/api.html#config-shim)代替在模块包装器中复制供应商源代码被认为是更好的做法,因为您将供应商代码保持原样并且可以随时取代它。 –