jquery 是 javascript 库还是框架? [关闭]
Posted
技术标签:
【中文标题】jquery 是 javascript 库还是框架? [关闭]【英文标题】:Is jquery a javascript library or framework? [closed] 【发布时间】:2011-10-27 03:02:40 【问题描述】:这里,jquery 是在 framework 类别下提到的: http://en.wikipedia.org/wiki/Comparison_of_javascript_frameworks
jquery 是 javascript 库还是框架?
【问题讨论】:
一个人的库是另一个人的框架。 这是题外话,因为every answer is equally valid: “What’s your favorite ______?”。另外,如果我们将其全部作为库或框架,这有什么关系? 【参考方案1】:jQuery: The Write Less, Do More, JavaScript Library.
【讨论】:
虽然我同意,但自给自足的名字/口号并不能证明什么。有成千上万个所谓的“框架”实际上是库。 @Kapep 但相反的情况不太常见:没有多少框架称自己为“库”。我猜“框架”这个词对某些人来说听起来更性感……【参考方案2】:图书馆。根据homepage,我同意。
框架通常会强制以某种方式实现解决方案,而 jQuery 只是一个工具,可以让您更轻松地实现您想做的事情。
【讨论】:
+1。库是您从程序中调用的东西。框架是调用程序的东西。 对于库与框架的比较,请参阅“控制反转”***.com/a/3057818/2144912【参考方案3】:当然,它是一个 javascript 库。但是关于是否是框架,我只是认为它不是框架。看看wikipedia definition of software-framework:
它是提供定义的软件库的集合 应用程序编程接口。
而 jQuery 只是一个单一的库。之后它说:
框架包含将它们与普通库区分开来的关键区别特征:
控制反转 - 在框架中,与库或普通用户应用程序不同,整个程序的控制流不是由调用者决定,而是由框架决定。
所以,我认为它不是一个框架。
【讨论】:
【参考方案4】:我同意这里的所有答案,即 jQuery 本身确实是一个库,而不是一个框架。正如 Saeed 的回答所指出的,关键的显着特征之一是控制反转。但是,您可以使用 jQuery 的功能来创建自己的框架。
示例:有一些基于 jQuery 构建的项目被定义为框架:jQuery Mobile: A Touch-Optimized Web Framework、JavaScriptMVC 和 sammy.js 等等。
还有其他基于 jQuery 构建的库,例如 jQuery UI
在定义什么是库与框架时,其中一些看起来像是语义,但这些示例帮助我划清界限。
【讨论】:
【参考方案5】:根据angularjs web site
一个库 - 一组在编写 Web 应用程序时很有用的函数。您的代码负责,当 它认为合适。例如,jQuery。 框架 - Web 应用程序的特定实现,您的代码在其中填写详细信息。框架负责 当它需要特定于应用程序的东西时,它会调用您的代码。 例如,durandal、ember 等。
【讨论】:
【参考方案6】:框架和库不一定是相互排斥的术语。框架通常是一个库或库的集合。
严格来说,jQuery 是一个库,但在某种程度上,它确实符合软件框架的定义。尽管许多人会争辩说 jQuery 并没有足够严格地满足软件框架的定义,但事实是没有其他 JavaScript 框架也完全符合框架的定义。
软件框架的定义特征之一是其代码不受修改。在 JavaScript 中,显然不是这样。可以在客户端代码中调用的任何库或框架都是可修改的,尽管更改它们会违反最佳实践。因此,如果允许将 Bootstrap 或 AngularJS 称为框架,那么 jQuery 也没有理由不能称为框架。 This link 包含对 jQuery 如何满足被称为框架的标准的更详细说明。
对于为什么 jQuery 更像是一个框架而不是一个库,最好的解释可能是,作为开发人员,您可以选择不使用它的任何类似框架的功能。例如,您可以在同一行中混合使用简单的 jQuery 语句和标准的 JavaScript 语句。 AngularJS 和 Bootstrap 通常不允许你这样做。因此,jQuery 是否是框架的准确答案是“这取决于您是否选择将其用作框架”。
【讨论】:
【参考方案7】:如果我们谈论控制反转,上面线程中几乎每个人都在谈论,那么 jQuery 就是一个框架。
它有 IOC,例如当我们编写函数 $(document).ready...它是调用此方法的容器,我们只需将代码放在大括号内。我们不是此方法的调用者,因此不是“控制反转”
这样 jQuery 就是一个框架。
【讨论】:
嗯,大多数大型库出于某种目的至少提供了某种模糊的回调方法。您可以编写大量 jQuery 代码,而无需依赖ready()
。
@NathanTuggy 那么为什么连关于 Framework 与 Lib 的详细讨论都谈到了 IOC。如果它在那里,它就在那里。为什么要谈论“依赖”或“不依赖”。
因为框架式 IoC 的特点是使用它的必要性。不是按需要以特定方式点菜使用它的可能性。在框架中,您别无选择:控制被倒置。以上是关于jquery 是 javascript 库还是框架? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Jquery 与新的 Javascript 框架/库(Angular、Ember、React 等)[关闭]