【问题标题】:3rd-party JavaScript application dependency management3rd-party JavaScript 应用程序依赖管理
【发布时间】:2012-11-22 18:47:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript dependency-management


    【解决方案1】:

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

    您可以使用http://yepnopejs.com/ 之类的条件加载器来提高清晰度和速度。

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

    【讨论】:

    • 啊,是的,我同意 yepnope 将是处理它的好方法。感谢您的建议。
    猜你喜欢
    • 2014-02-28
    • 1970-01-01
    • 2018-06-19
    • 2018-05-13
    • 2015-03-12
    • 1970-01-01
    • 2013-06-07
    • 2011-03-13
    • 2013-04-22
    相关资源
    最近更新 更多