jQuery是JavaScript库还是框架?[关闭]


121

在这里,jquery在框架类别下被提及:http : //en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks

jQuery是JavaScript库还是框架?


40
一个人的图书馆是另一个人的框架。
nnnnnn

1
这是不合时宜的,因为每个答案都同样有效:“您最喜欢的______是什么?” 。另外,如果我们全部使用库或框架,那又有什么关系呢?
EJoshuaS-恢复莫妮卡

Answers:




19

当然,这是一个javascript库。但是关于是否成为框架,我只是认为这不是框架。看一下Wikipedia对软件框架的定义

它是提供定义的应用程序编程接口的软件库的集合。

jQuery只是一个库。之后它说:

框架包含一些关键的区别功能,这些特征将它们与普通库分开:

  1. 控制反转-在框架中,与库或普通用户应用程序不同,整个程序的控制流不是由调用者决定,而是由框架决定。

因此,我认为这不是一个框架。


9

根据angularjs网站

  • 库-编写Web应用程序时有用的功能集合。您的代码由您负责,并在
    合适时调用库。例如,jQuery。
  • 框架-Web应用程序的特定实现,您的代码将在其中填充详细信息。该框架负责管理,当需要特定于应用程序的内容时,它将调用您的代码。例如,durandal,炭烬等

5

框架和诽谤不一定是互斥的术语。框架通常是图书馆或图书馆的集合。

严格来说,jQuery是一个库,但是在某种程度上,它确实满足了软件框架的定义。尽管许多人认为jQuery不能完全严格地满足软件框架的定义,但事实是,没有其他JavaScript框架也可以完全满足框架的定义。

软件框架的定义特征之一是保护其代码不受修改。在JavaScript中,情况显然并非如此。可以调用客户端代码的任何库或框架都是可修改的,尽管更改它们是违反最佳实践的。因此,如果允许将Bootstrap或AngularJS称为框架,则没有理由也不能将jQuery也称为框架。该链接包含有关jQuery如何满足被称为框架的条件的更详细说明。

关于jQuery为什么比框架更像框架而不是库的最好解释是,作为开发人员,您可以选择不使用任何类似框架的功能。例如,您可以在同一行上将简单的jQuery语句与标准JavaScript语句混合使用。AngularJS和Bootstrap通常不允许您执行此操作。因此,不管jQuery是否为框架,准确的答案是“它取决于您是否选择将其用作框架”。


2

我同意这里所有的答案,即jQuery本身确实是一个库,而不是一个框架。根据Saeed的回答,关键区别特征之一是控制反转。但是,您可以使用jQuery的功能来创建自己的框架。

示例:有一些基于jQuery构建的项目被定义为框架:jQuery Mobile:触摸优化的Web框架JavaScriptMVCsammy.js等

还有其他基于jQuery构建的库,例如jQuery UI

在定义什么是库还是框架时,其中有些看起来像语义,但是这些示例帮助我划清界限。


1

如果我们谈论控制反转,以上线程中的几乎每个人都在谈论,那么jQuery是一个框架。

它具有IOC,例如,当我们编写函数$(document).ready {}时 ...它是调用此方法的容器,我们只需将代码放在花括号中即可。我们不是此方法的调用方,因此不是“控制反转”

这样,jQuery是一个框架。


1
嗯,大多数大型库至少出于某种目的提供了某种模糊的回调式方法。您无需依赖即可编写许多jQuery代码ready()
内森·塔吉

@NathanTuggy那么,为什么甚至关于Framework vs Lib的详细讨论也谈到了IOC。如果在那,那就在那里。为什么要谈论“依赖”或“不依赖”。
pinkman '17

因为框架式IoC的特征在于必须使用它。无法按特定方式按需使用它。在框架中,您别无选择:控制倒置。
内森·塔吉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.