underscore.js,全局对象名为“出口”和livefyre的JavaScript API

2019-09-20 01:38发布

我会试着总结了几步,反问之后

  1. underscore.js未能开发JavaScript组件(如下所述:第三方何时安装Underscore.js和noconflict )。 我的代码包含以下行来避免不同版本underscore.js的冲突:

    。窗口$ 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(); 行这样的:

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

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

Answer 1:

答案,我想,很简单:叉强调在GitHub上 ,并添加一个简单的补丁拒绝其自身附加到exports ,如果window存在,并提交pull请求。

每个人都这样的好处:你不必在每次你升级你的底线的副本和其他人没有处理这个问题,无论是时间重新申请你的补丁。



文章来源: underscore.js, global object named “exports” and livefyre javascript API - integration conflict