RequireJS:使用Modernizer有条件地加载Polyfill
如何将polyfill脚本包装为AMD模块,并使用Modernizer和RequireJS有条件地加载它RequireJS:使用Modernizer有条件地加载Polyfill,requirejs,modernizr,polyfills,Requirejs,Modernizr,Polyfills,如何将polyfill脚本包装为AMD模块,并使用Modernizer和RequireJS有条件地加载它 当我为其他试图做同样事情的人起草我的问题张贴答案时,我发现了这一点。我需要加载的polyfill用于不支持输入占位符的浏览器。它不提供现成的AMD支持 首先,我将其包装为AMD模块,如下所示: define(['jquery'], function ($) { (function(window, document, $) { ... polyfill ... }(this,
当我为其他试图做同样事情的人起草我的问题张贴答案时,我发现了这一点。我需要加载的polyfill用于不支持输入占位符的浏览器。它不提供现成的AMD支持 首先,我将其包装为AMD模块,如下所示:
define(['jquery'], function ($) {
(function(window, document, $) {
... polyfill ...
}(this, document, jQuery));
});
然后在main.js中,我使用Modernizer有条件地要求polyfill脚本:
require(['jquery', 'modernizr'], function ($, Modernizr) {
if (!Modernizr.input.placeholder) {
require(['jquery', 'placeholder'], function ($) {
$('#input').placeholder();
});
}
});
在您的示例中,需要jQuery两次。如果jQuery占位符是需要jQuery的唯一原因,那么在第一步中,我只需要Modernizer而不需要jQuery。另外,在模块包装器中使用而不是复制供应商源代码被认为是更好的做法,因为您可以保持供应商代码不变,并随时替换它。