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.jsjasmine 。 库是通常由应用程序调用来执行任务的代码包,如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。 它甚至可以在内部使用或由多个库组成。

重要的是:最后,人们认为他们使用“框架”和“图书馆”。 不幸的是;)