如何使用 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 降级到遗留版本,而不是自动填充它。