Javascript库是否应该动态添加依赖项
Should a Javascript library dynamically add dependencies?
我正在开发一个需要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这样非常流行的库不会这样做。
我认为最好强制用户这样做,这样他们就能了解库是如何工作的。
一般来说,通常有某种可用的资源加载器,它将处理添加资源。如果你单独做这件事,它会分裂出一组希望最终用户使用的功能。
相关文章:
- 如何将本地依赖项添加到npm项目中
- 在控制器中添加$location依赖项时,ng-click停止激发
- 如何在引导程序中添加dropdown.js依赖项
- 将 AMD 支持添加到库时,是否也应该在 define() 中列出其依赖项
- 添加角度实体化的依赖项时出错
- 有没有任何方法可以用javascript将optgroup标签添加到依赖的dropdownlist
- 我如何让bower和grunt添加角度引导ui依赖
- 添加第三方供应商依赖项意味着.js
- SpookyJS:添加了一些依赖项后.js无法执行hello
- 在 Webpack 插件中添加依赖关系
- 添加依赖项后浏览器崩溃
- 没有状态的Angularjs控制器.如何添加依赖项
- AngularJS在引导后添加依赖项
- 我如何添加依赖到我的脊柱应用程序
- 使用javascript动态添加依赖的下拉列表
- 在angular.module中添加依赖的正确方法
- Angular JS——添加依赖于彼此的库
- Javascript库是否应该动态添加依赖项
- 为什么两个不同的模块可以相互访问时,添加依赖于第三个模块
- 在Node.js中添加依赖时,我应该更改哪些文件