1

我正在开发一个需要 jQuery 和 Raphael 的小型 JS 库。我已经在自述文件中记录了这个事实,但我不喜欢用户必须手动包含三个 JS 库才能使用它的想法。

如果库没有找到依赖项,那么动态包含依赖项的优缺点是什么?像这样:

if (!window.jQuery) {
    var _my_script=document.createElement('SCRIPT');
    _my_script.type='text/javascript';
    _my_script.src='//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js?';
    document.getElementsByTagName('head')[0].appendChild(_my_script);
    console.log("Loaded jQuery");        
} else {
    console.log("jQuery already loaded");
}

// get Raphael if not found
if (typeof(Raphael) === "undefined") {
    var _my_script=document.createElement('SCRIPT');
    _my_script.type='text/javascript';
    _my_script.src='//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js?';
    document.getElementsByTagName('head')[0].appendChild(_my_script);
    console.log("Loaded Raphael");        
} else {
    console.log("Raphael already loaded");
}

犹太洁食?

4

2 回答 2

1

我个人不知道任何自动下载“外部”依赖项的 js 库,我认为在正常情况下这不是一个好主意。

表达清楚需要的库和最小版本就足够了,这就是我所知道的所有 js 库的工作方式。

像 jQuery 这样的库可以从 CDN、本地等下载,因此强制每个人都使用源代码和版本是没有意义的。

于 2013-02-18T16:20:52.387 回答
1

我知道像backbone.js 这样非常流行的库不会这样做。

我认为最好强迫用户这样做,这样他们才能了解图书馆的工作方式。

一般来说,通常有某种可用的资源加载器,它将处理添加资源。如果您单独执行此操作,它会分裂一组希望最终用户正在使用的功能。

于 2013-02-18T16:21:29.563 回答