我需要处理一个需要传统支持的项目。 我如何将它与modernizr集成,只在必要时才加载遗产? 这甚至可能吗?
答案 0 :(得分:1)
遗留构建包括一些不在IE8中的小块和多块的polyfill - Ractive在第一次加载时会自行检查,如果检测到缺少的功能则会抛出错误(并且它是非遗留构建)。检测代码为here - 因此您只需将其复制到您的应用中即可:
function useRactiveLegacy () {
return (
typeof Date.now !== FUNCTION ||
typeof String.prototype.trim !== FUNCTION ||
typeof Object.keys !== FUNCTION ||
typeof Array.prototype.indexOf !== FUNCTION ||
typeof Array.prototype.forEach !== FUNCTION ||
typeof Array.prototype.map !== FUNCTION ||
typeof Array.prototype.filter !== FUNCTION ||
( typeof window !== 'undefined' && typeof window.addEventListener !== FUNCTION )
);
}
// using Modernizr
Modernizr.load({
test: !useRactiveLegacy(),
yep: 'ractive.js',
nope: 'ractive-legacy.js
});
// using AMD
require([ useRactiveLegacy() ? 'ractive-legacy' : 'ractive' ], function ( Ractive ) {
/* code goes here */
});
请记住这些检查可以随着Ractive的未来版本而改变 - 例如,我们可能会决定将Promise转移到旧版本,而不是自动填充它。