2012-07-20 108 views
43

可能重複:
Framework vs. Toolkit vs. LibraryJavaScript框架和庫之間有什麼區別?

我想知道什麼是一個JavaScript框架,通過使用一些例如庫之間的差異。

例如,jquery,backbone.js和jasmine是JavaScript框架還是庫?爲什麼?

你能提供使用句子JavaScript框架和圖書館的一些例子Don't call Us, We'll call You.

+1

我不相信有一個真正的答案。他們有些重疊的條款。 – Peter 2012-07-20 08:53:17

+0

通常,「框架」意味着[特殊]執行上下文,而「庫」只是一些使用的外部API。然而,通過這個定義,然後一個jQuery插件將使用「jQuery框架」..在任何情況下,不投票結束,因爲這是一個軟性大多開放式問題。 – 2012-07-20 08:53:28

+0

http://chat.stackoverflow.com/transcript/message/4603815#4603815另請參閱http://en.wikipedia.org/wiki/Software_framework – Esailija 2012-07-20 08:58:00

回答

50

即使壽這個問題是非常主觀的,我對這兩個人的看法是這樣的:

  • 框架 :這描述了一個給定的結構,你應該如何呈現你的代碼。非常像代碼模板,沿着一些助手,構造函數等來解決/簡化特定問題或使您的架構「按順序」。例如,「Backbone」,「requireJS」,「socketIO」。

  • 圖書館:是一個完整的工具包,它在高度抽象不同的層,像瀏覽器/ DOM模型/等同樣是一個很好的工具,它提供了大量的工具和整潔的東西的工作,這在一般情況下,簡化您的編碼體驗。例如 「jQuery的」, 「MooTools的」, 「YUI

+1

+1感謝您的回答。你還可以舉一些關於'不要打電話給我們,我們會打電話給你'這個句子的例子。' – js999 2012-07-20 09:06:47

+0

或者簡單地說我們可以說JQuery是一個庫,JQuery Mobile是一個框架:) – Sarath 2014-04-01 14:59:33

+1

@jAndy爲什麼Backbone文檔說它的圖書館可以請你在這裏解釋,我只是想解決這個混淆 – 2014-09-19 11:54:06

0

一個JavaScript庫是預先編寫的JavaScript庫,它允許對基於JavaScript的應用程序更容易開發。

和一些JavaScript庫(如YUI)被分類爲框架,因爲它們展現了在通用JavaScript庫中找不到的全堆棧功能和屬性。

0

JavaScript是一種腳本語言。

JQuery是一個JavaScript庫,它處理許多常用功能,並處理Internet Explorer和符合標準的瀏覽器之間的差異。在創建基於Web的應用程序時,您可以使用它來減少工作量。

0

這兩者之間的區別沒有真正的定義,但總的來說,我認爲框架是一個比圖書館更通用的「多工具」的東西,而圖書館通常是非常專業化的。

例如,Sylvester是矩陣和向量數學。它的功能非常具體。

A 框架Prototype另一方面提供的不僅僅是一組有限的非常專業的功能。它甚至可以在內部使用或由多個庫組成。

重要提示: 最後,人們使用他們認爲合適的「框架」和「庫」。不幸的是)

2

一個框架封裝了通用的應用程序功能,允許開發人員專注於其應用程序所特有的部分。這意味着開發人員在各種事情發生時編寫由框架調用的代碼片段;例如:backbone.jsjasmine。 庫是通常由應用程序調用以執行任務的代碼包,如DOM操作或HTTP請求。例如:jQuery

29

我jAndy同意,在我看來框架爲了解決一個具體問題規定的結構在你的代碼和是一個通用的一套幫助您在各種任務的工具,而不必解決同樣的問題。

在這方面:

  • jQuery是一個庫,因爲它抽象了很多瀏覽器不兼容的,但規定了你的代碼沒有結構。
  • underscore.js是一個庫,因爲它是處理數據結構和其他好東西的實用程序集合。
  • backbone.js是一個框架,因爲它構成了您的前端代碼以匹配MVC模式。
  • Jasmine是一個框架,因爲它構成了你的代碼,所以你可以很容易地做BDD。

關於你的建議的例子,框架適合don't call us範式,因爲他們大多徵收碼流(某種inversion of control)。你打電話給圖書館,他們不會打電話給你的代碼。

這是一個主觀意見,所以採取這樣的。

+1

+1感謝您的答案,這是非常明確的,並回應我的問題。 – js999 2012-07-20 09:04:44

相關問題