第三方JavaScript应用程序依赖关系管理

第三方JavaScript应用程序依赖关系管理,javascript,dependency-management,Javascript,Dependency Management,我正在为一个第三方JavaScript应用程序做贡献,我们称之为X。一个网站所有者可能会在他们自己的网站中放置X,我们称之为Y,使用脚本标记,X可能会呈现一些内容,响应事件,等等。想想类似disqs的东西 X可能依赖于诸如Handlebar、Underline.js等库。我面临的问题是以一种不干扰Y的方式解决这些依赖关系。如果X自己拉入Handlebar和Underline.js,而Y已经包含这些库,事情可能会爆炸,因为有两个版本可能会导致未定义的行为 那么,处理这种情况的最佳方法是什么呢?既然

我正在为一个第三方JavaScript应用程序做贡献,我们称之为X。一个网站所有者可能会在他们自己的网站中放置X,我们称之为Y,使用脚本标记,X可能会呈现一些内容,响应事件,等等。想想类似disqs的东西

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


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

既然不能保证任何网站所有者都会使用与X相同的依赖关系管理系统,为什么不使用条件加载呢?只需检查是否存在例如window.jQuery,并仅在尚未定义jQuery时加载它。依此类推,适用于正确命名的第四方组件。如果您要求用户只在页面底部加载库,您应该可以

为了清晰和快速,您可以使用类似的条件加载器


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

啊,是的,我同意yepnope是一个很好的处理方法。谢谢你的建议。