1

我正在为一个第 3 方 JavaScript 应用程序做贡献,我们称之为 X。网站所有者可以将 X 放在他们自己的网站中,我们称之为 Y,使用脚本标签,X 可能会呈现一些内容、响应事件等.想想像Disqus这样的东西。

X 可能依赖于 Handlebars、Underscore.js 等库。我面临以不干扰 Y 的方式解决这些依赖关系的问题。如果 X 为自己引入 Handlebars 和 Underscore.js,而 Y 已经包含这些图书馆,事情可能会因为那里有两个版本可能会导致未定义的行为而爆炸。

那么处理这种情况的最佳方法是什么?

4

1 回答 1

0

既然你不能保证任何网站所有者都会使用与 X 相同的依赖管理系统,为什么不直接使用条件加载呢?只需检查(例如)window.jQuery 是否存在,如果尚未定义,则仅加载 jQuery。对于您的正确命名空间的第四方组件,依此类推。如果你要求你的用户只在他们页面的底部加载你的库,你应该没问题。

为了清晰和快速,您可以使用像http://yepnopejs.com/这样的条件加载器。

或者,您是否可以要求您的用户自己插入所需的库?您在分发点声明您的依赖关系(并提供代码),并在页面上没有其他需要的库时提供美观的错误状态(例如,对话框、console.log 等)。

于 2012-12-05T03:26:32.160 回答