我正在为第 3 方 JavaScript 应用程序做出贡献,我们称其为 X。网站所有者可以将 X 放置在自己的网站中,我们称其为 Y,使用脚本标记,X 可能会呈现一些内容,响应事件等。想想像 Disqus 这样的东西。
X 可能依赖于 Handlebars、Underscore.js 等库。我面临着以不干扰 Y 的方式解决这些依赖关系的问题。如果 X 为自己引入 Handlebars 和 Underscore.js,而 Y已经包含这些库,由于存在两个版本,可能会导致未定义的行为,因此事情可能会崩溃。
那么处理这种情况的最佳方法是什么?
最佳答案
既然你不能保证任何网站所有者都会使用与 X 相同的依赖管理系统,为什么不直接使用条件加载呢?只需检查(例如)window.jQuery 是否存在,并且仅在尚未定义时加载 jQuery。对于正确命名的第四方组件,依此类推。如果您要求用户在页面底部加载您的库,应该没问题。
您可以使用条件加载器,例如 http://yepnopejs.com/为了清晰度和速度。
或者,您是否可以要求用户自己插入所需的库?您可以在分发点声明您的依赖关系(并提供代码),并在页面上没有其他所需的库时提供美观的错误状态(例如,对话框、console.log 等)。
关于javascript - 3rd-party JavaScript 应用程序依赖管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13714834/