underscore.js,名为“”的全局对象;出口;和livefyre javascript API-集成冲突
underscore.js, global object named "exports" and livefyre javascript API - integration conflict
我将尝试总结几个步骤,并在之后提出一个问题
-
underscore.js
在开发第三方javascript组件时安装失败(如本文所述:Undercore.js和noconflict)。我的代码包括以下行,以避免underline.js的不同版本发生冲突:窗口$MyUS=_.noConflict();
-
当查看
underscore.js
代码时,发现如果定义了exports
或module.exports
,则_
变量将成为exports
或module.exports
的成员。它只是发生了(在浏览器中,当然不是在Node.js中)。 -
我尝试将
exports
对象保存在一边,在加载underscore.js
之前将其删除,并在调用noConflict()
之后立即恢复。但是,当调用delete exports
时,我得到了false
,这意味着exports
不能被删除。 -
我在
exports
对象中发现了两个成员函数:compile()
和compileToString()
。通过研究它们的实现,我发现了LF
引用,它们可能引用了livefyre
Javascript API(http://www.livefyre.com/docs/javascript-sdk-reference)
解决冲突的更好方法是什么?我看到以下选项:
-
修改underline.js代码,使其不会尝试将自己安装到
exports
对象中。 -
让underline.js来修改
exports
对象,并希望在任何网站上都不会发生任何错误。在这种情况下,我需要重写window.$MyUS = _.noConflict();
行,如下所示:窗口$MyUS=.noConflict||导出.noConflict()||…;//为了清晰起见,省略了健全性检查,显然生产代码必须是更健壮的
如果您需要更多信息,请询问。
我认为答案很简单:在GitHub上分叉下划线,添加一个简单的补丁,如果window
存在,则拒绝将自己附加到exports
,并提交一个拉取请求。
这样每个人都会受益:你不必每次升级下划线副本时都重新应用补丁,其他人也不必处理这个问题。
- “;出口;在PhantomJS中定义
- Ng出口无法访问父$scope
- 在Koa出口路线
- “出口”;保存以备以后使用”;远离(邪恶)
- 在页面出口的PrimeFaces中检测客户端对UI组件的更改
- underscore.js,名为“”的全局对象;出口;和livefyre javascript API-集成冲突
- 余烬.js + 车把:渲染 vs 出口 vs 部分 vs 视图 vs 控制
- 在 ajax 响应后在出口中呈现视图
- 当我在 Emberjs 中使用 {{link-to}} 中的 id 刷新 url 时,子出口变为空
- 安装 socket.io 返回(node-gyp 重建 2> 构建错误.log) ||(0 号出口)
- 希望Ember.js命名的出口只在点击时显示
- 角度2:倍数<路由器出口>子路线
- Ember嵌套出口
- 固定jQuery验证+php检查用户出口
- Ember.js渲染到视图's出口
- 使用Animate.css链接弹跳入口/出口
- 在父元素的悬停出口动态实例化/暂停Youtube视频(iFrame API)
- 在模块上使用sinon测试方法调用.出口的方法
- 节点# 39;s模块.出口和生活混淆
- 试图用javascript在页面出口上跨域发送数据