gpt4 book ai didi

javascript - underscore.js、名为 "exports"的全局对象和 livefyre javascript API - 集成冲突

转载 作者:行者123 更新时间:2023-11-29 22:22:27 25 4
gpt4 key购买 nike

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

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

    window.$MyUS = _.noConflict();

  2. 在查看 underscore.js 代码时,发现如果定义了 exportsmodule.exports,那么_ 变量将成为 exportsmodule.exports 的成员。它就这样发生了(在浏览器中,当然不是在 Node.js 中)。

  3. 我尝试将 exports 对象保存到一边,并在加载 underscore.js 之前将其删除,并在调用 noConflict() 后立即将其恢复。但是,当调用 delete exports 时,我得到了 false,这意味着 exports 无法删除。

    <
  4. 我在exports 对象中发现了两个成员函数:compile()compileToString()。通过查看它们的实现,我发现了 LF 引用,这些引用可能引用了 livefyre Javascript API ( http://www.livefyre.com/docs/javascript-sdk-reference )

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

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

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

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

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

最佳答案

我认为答案很简单:fork underscore on GitHub并添加一个简单的补丁,如果 window 存在,它拒绝将自己附加到 exports,并提交拉取请求。

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

关于javascript - underscore.js、名为 "exports"的全局对象和 livefyre javascript API - 集成冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11615610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com