【发布时间】:2015-01-05 14:06:06
【问题描述】:
我需要处理一个需要遗留支持的项目。 我将如何将它与 modernizr 集成以仅在必要时加载遗留? 这可能吗?
【问题讨论】:
标签: modernizr legacy ractivejs
我需要处理一个需要遗留支持的项目。 我将如何将它与 modernizr 集成以仅在必要时加载遗留? 这可能吗?
【问题讨论】:
标签: modernizr legacy ractivejs
旧版构建包含一些 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 的未来版本而改变 - 例如,我们可能会决定将 Promises 降级为旧版本,而不是自动填充它。
【讨论】: