如何使用modernizr加载ractive遗产

时间:2015-01-05 14:06:07

标签: modernizr legacy ractivejs

我需要处理一个需要传统支持的项目。 我如何将它与modernizr集成,只在必要时才加载遗产? 这甚至可能吗?

1 个答案:

答案 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转移到旧版本,而不是自动填充它。