Javascript库是否应该动态添加依赖项

Should a Javascript library dynamically add dependencies?

本文关键字:添加 依赖 动态 是否 Javascript      更新时间:2023-09-26

我正在开发一个需要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");
}

犹太洁食?

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

表达明确的必需库和最低版本就足够了,这就是我所知道的所有js库的工作方式。

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

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

我认为最好强制用户这样做,这样他们就能了解库是如何工作的。

一般来说,通常有某种可用的资源加载器,它将处理添加资源。如果你单独做这件事,它会分裂出一组希望最终用户使用的功能。