JavaScript框架和库有什么区别?
可能重复:
框架与工具包与图书馆
我想通过使用一些例子来了解JavaScript框架和库之间的区别。
例如,jquery,backbone.js和jasmine是JavaScript框架还是库? 为什么?
你可以提供一些JavaScript框架的例子和一个库使用句子Don't call Us, We'll call You.
即使这个问题是非常主观的,我个人对这两个人的看法是这样的:
-
框架 :这里描述了一个给定的“如何”你应该呈现你的代码的结构。 非常像一个代码模板,沿着一些助手,构造函数等来解决/简化一个特定的问题,或者把你的体系结构按顺序排列。 例如“ 主干 ”,“ 请求 ”,“ socketIO ”。
-
库 :是一个高度抽象不同层次的完整工具包,比如浏览器/ DOM模型等。作为一个好的工具包,它提供了很多工具和整洁的东西来处理,这通常会简化你的编码体验。 示例“ jQuery ”,“ MooTools ”,“ YUI ”
我同意jAndy,在我看来,一个框架强加给你的代码的结构,以解决一个特定的问题,一个库是一个通用的工具集,帮助你完成各种任务,而不一定解决同样的问题。
在这方面:
-
jQuery
是一个库,因为它抽象了很多浏览器的不兼容性,但是在你的代码中没有任何结构。 -
underscore.js
是一个库,因为它是一个操作数据结构和其他好东西的实用程序集合。 -
backbone.js
是一个框架,因为它构build了与MVC模式相匹配的前端代码。 -
Jasmine
是一个框架,因为它构成你的代码,所以你可以轻松地做BDD。
关于你所提出的例子,框架符合don't call us
范式的原因,因为它们中的大多数都强加了代码stream(某种控制反转 )。 你打电话给图书馆,他们不叫你的代码。
这是一个主观的意见,所以要这样做。
框架封装了通用的应用程序function,使开发人员可以专注于应用程序所特有的部分。 这意味着开发人员会在发生各种事情时编写由框架调用的代码段。 例如: backbone.js
或jasmine
。 库是通常由应用程序调用来执行任务的代码包,如DOM操作或HTTP请求。 例如: jQuery
。
JavaScript库是一个预先编写的JavaScript库,可以更轻松地开发基于JavaScript的应用程序。
而一些JavaScript库(如YUI)被分类为框架,因为它们展示了在通用JavaScript库中没有的全栈function和属性。
JavaScript是一种脚本语言。
JQuery是一个JavaScript库,处理许多常用的function,也处理,如Internet Explorer和符合标准的浏览器之间的差异。 在创build基于Web的应用程序时,您可以使用它来减less工作量。
对这两者之间的区别没有真正的定义,但是总的来说,我认为框架是比图书馆更通用的“多工具”的东西,而图书馆通常是非常专业化的。
例如, Sylvester是一个matrix和vectormath库 。 它的function非常具体。
另一方面,像Prototype这样的框架提供的不仅仅是一组有限的专用function。 它甚至可以在内部使用或由多个库组成。
重要的是:最后,人们认为他们使用“框架”和“图书馆”。 不幸的是;)