如何使用 modernizr 加载 ractive legacy
how to use modernizr to load ractive legacy
我需要处理一个需要遗留支持的项目。
我将如何将它与 modernizr 集成以仅在必要时加载旧版?
这可能吗?
旧版包含 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 降级到遗留版本,而不是自动填充它。
我需要处理一个需要遗留支持的项目。 我将如何将它与 modernizr 集成以仅在必要时加载旧版? 这可能吗?
旧版包含 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 降级到遗留版本,而不是自动填充它。