我正在开发一个需要jQuery和Raphael的小型JS库。我在README中记录了这个事实,但我不喜欢用户必须手动包含三个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");
}
洁食?
答案 0 :(得分:1)
我个人不知道任何自动下载“外部”依赖项的js库,我认为在正常情况下这不是一个好主意。
表达明确要求的库和最小版本应该足够了,这就是我所知道的所有js库的工作方式。
像jQuery这样的库可以从CDN,本地等下载,因此强制每个人的源和版本是没有意义的。
答案 1 :(得分:1)
我知道像backbone.js这样非常受欢迎的库不会这样做。
我认为强迫用户执行此操作会更好,因此他们了解库的工作方式。
通常,通常会有某种资源加载器可用,它将处理添加资源。如果你单独执行此操作,它会分散一组希望最终用户正在使用的功能。