2

我会尝试总结几个步骤,然后问一个问题

  1. underscore.js开发 3rd-party javascript 组件时安装失败(如此处所述:Underscore.js 和 noconflict)。我的代码包含以下行以避免不同版本的underscore.js发生冲突:

    window.$MyUS = _.noConflict();

  2. 在查看underscore.js代码时发现,如果定义了exportsor ,则变量将成为or的成员。它只是发生了(在浏览器中,当然不是在Node.js中)。module.exports_exportsmodule.exports

  3. 我试图将exports对象保存在一边,并在加载之前将其删除,underscore.js并在调用noConflict(). 但是,调用 时delete exports,Ive got false,表示exports无法删除。

  4. 我在exportsobject:compile()compileToString(). 通过查看他们的实现,我发现LF了可能引用livefyreJavascript API ( http://www.livefyre.com/docs/javascript-sdk-reference )的参考资料

解决冲突的更好方法是什么?我看到以下选项:

  1. 修改underscore.js代码,使其不会尝试将自身安装到exports对象中。

  2. underscore.js来修改exports对象,希望任何网站都不会出错。在这种情况下,我需要像这样重写该window.$MyUS = _.noConflict();行:

    window.$MyUS = .noConflict || 出口。.noConflict() || ... ; // 为了清楚起见省略了完整性检查,显然生产代码必须更健壮

如果您需要更多信息 - 请询问。

4

1 回答 1

2

我认为答案很简单:在 GitHub 上创建下划线exports并添加一个简单的补丁,如果存在则拒绝附加到该补丁window,然后提交拉取请求。

这样每个人都会受益:每次升级下划线副本时都不必重新应用补丁,其他人也不必处理这个问题。

于 2012-07-23T15:58:04.623 回答