框架和库之间的区别是什么?
我一直认为库是一组对象和函数,专注于解决特定的问题或应用程序开发的特定领域(即数据库访问);另一方面,框架是一个以特定方法论(即MVC)为中心的库的集合,它涵盖了应用程序开发的所有领域。
框架和库之间的区别是什么?
我一直认为库是一组对象和函数,专注于解决特定的问题或应用程序开发的特定领域(即数据库访问);另一方面,框架是一个以特定方法论(即MVC)为中心的库的集合,它涵盖了应用程序开发的所有领域。
当前回答
你的解释听起来不错。库可以是任何经过编译和自包含的东西,以便在其他代码中重用,实际上对其内容没有任何限制。
另一方面,框架应该具有一系列用于应用程序开发的特定领域的功能,就像您的示例MVC一样。
其他回答
从Web开发人员的角度来看:
库可以很容易地被另一个库替换。但框架不能。 如果你不喜欢jquery日期选择器库,你可以替换为其他日期选择器,如bootstrap日期选择器或pickadate。 如果你不喜欢在AngularJS上构建你的产品,你不能用任何其他框架来替代。你必须重写你的整个代码库。 大多数情况下,与框架相比,库需要更少的学习曲线。例如:underscore.js是一个库,Ember.js是一个框架。
我喜欢科恩的回答,但更专业的定义是:你的代码调用一个库。框架调用您的代码。例如,GUI框架通过事件处理程序调用代码。web框架通过请求-响应模型调用你的代码。
这也被称为控制反转——突然之间,框架决定何时以及如何执行你的代码,而不是像库那样反过来执行。这意味着框架对代码的结构也有更大的影响。
我忘记在哪里看到这个定义了,但我觉得它很好。
库是从代码中调用的模块,框架是调用代码的模块。
我认为你很好地阐述了其中的区别:框架提供了一个我们工作的框架……不知何故,它比简单的库更“有约束”。 框架还应该为一组库添加一致性。
根据Erich Gamma等人在《设计模式》一书中给出的定义:
库:构成可重用实现的一组相关过程和类; 框架:由一组具有模板方法的协作类组成的可重用规范。它设置了控制流,并允许通过在子类中重写框架类中模板方法调用的钩子方法来将框架裁剪到特定问题的流中。
特定于问题的代码可以使用库和实现框架。