2011-03-26 14 views
21

Facebook主要是基於JavaScript的。爲什麼不依賴於jQuery(或任何其他類似的庫)?爲什麼Facebook不使用jQuery(或類似的)?

編輯:爲什麼要關閉這個問題?這不是主觀的。由於某種原因,facebook不會使用jQuery(或任何其他框架),我所要求的。

+1

這是非常主觀的性質。爲什麼不使用MooTools? YUI?也許是因爲他們必須(因爲之前的決定或當前的需求),或者董事會董事支持新的自定義設置。這是一個非問題。 – 2011-03-26 20:58:58

+1

,因爲John Resig適用於Mozilla,而不是Facebook。 – Anurag 2011-03-26 20:59:03

+1

爲什麼要關閉這個問題?這不是主觀的。 facebook沒有'使用jquery(或任何其他框架)的原因 – dynamic 2011-03-26 21:00:18

回答

48

簡短的回答:你必須問問Facebook開發團隊。

最佳猜測:

  1. 大公司有大的軟件產品(和成熟的代碼庫)傾向於使用什麼工作 - 即使有一個流行的框架已經在那裏,這是令人信服的移動到。請記住,在JQuery被認爲是標準之前,Facebook已經很久了。

  2. 他們可能會在未來的很多年裏支持他們現有的代碼。而使「轉換」成爲新語言或框架的成本收益比可能太低而不能保證重寫或轉換。例如:Sun並沒有將大部分的Solaris移植到Java中。只有少量的Windows用C#編寫。

  3. 在2011年當我第一次寫這樣的:如果你真的看Facebook的網站,他們的DOM結構不那麼複雜。他們沒有很多動畫。他們不是一個非常沉重的AJAX網站。鑑於此,JQuery可能不會爲他們引人注目。 更新 - 2015年:FB比多年前更具活力。因此,#3這裏不持有相同的權重,因爲它在2011年

  4. 也做了,當你有多個團隊促成單一軟件產品(或網站),讓每個人對標準化在同一框架是非常重要的。如果每個團隊都與不同的框架集成在一起,那麼隨着所有這些不同的庫的鏈接,代碼將迅速膨脹。在網站的情況下,這意味着更長的頁面加載時間。

  5. JQuery旨在支持最大的一組瀏覽器。在某些情況下,這可能意味着「優化最低公分母」。 FB可能希望在可用時利用較新的瀏覽器功能。

  6. FB可能不希望太「鎖定」到JQuery。已知JQuery與一些處於測試階段的新瀏覽器存在一些錯誤。現在,如果Facebook擁有基於JQuery 1.6的一百萬行代碼,那麼在今年IE 10,FF 5和Chrome 12上運行時可能會出現問題。爲了實現這個功能,他們必須升級到JQuery 1.7,但這意味着在整個代碼庫中進行大量的測試。

  7. 最後,他們可能有比JQuery更好的內部功能。如果Facebook已經有一個基於瀏覽器發出頁面請求的服務器端框架來輸出HTML + JS,我不會感到驚訝。

我認識到這些答案都不是很受歡迎。你的團隊中的哪些開發人員不想切換到最新最好的技術?但是,當您考慮支持框架的業務案例和成本與您的業務規模相關時,您必須謹慎行事。

+1

我認爲這個答案是有道理的。 – 2011-03-26 22:03:02

+1

如果他們有一百萬行自己的代碼,他們將不得不測試它。除了[自動測試](http://swarm.jQuery.org)之外,像jQuery這樣的開源庫已經過數百萬人的測試。 – 2011-03-26 23:00:32

+4

我認爲數字7是最有可能的。如果他們沒有框架,我會感到驚訝。 jQuery帶有很多facebook的功能,可能不需要大多數的功能。當涉及到一天數十億的頁面加載時,每個字節都是重要的!理性的做法是建立一個框架,以提供所需的確切數量的功能。沒有什麼更多,也沒有更多 – Nojan 2013-01-07 16:01:07

1

以我個人經驗的,因爲很多大公司都覺得他們太不好用的框架,他們覺得有必要「內部」把一切都

+2

你曾經僱傭過幾家大公司? xD – dynamic 2011-03-26 20:57:33

+0

至於我個人,1。但我知道很多人:P – 2011-03-26 21:00:28

+0

不,但認真,根據我的經驗,它通常會歸結爲這樣的事情。或品牌。他們不希望人們認爲他們使用第三方的東西時便宜。或者以某種方式相互贊同。 IOW政治。 – 2011-03-26 21:01:39

2

因爲他們建立他們需要對自己的東西, jQuery也是Javascript。

5

因爲他們選擇做自己的事情?

4

由於您陳述的確切原因,Facebook並不依賴庫,它主要是基於JavaScript的。因此,他們希望完全控制和定製他們編寫的代碼。這樣他們就可以編寫特定於其應用程序的解決方案,這也提高了效率。效率對於所有網站(以及絕對的Facebook)來說都是一件很大的事情,這樣他們就可以輕鬆地編輯他們的代碼來輕鬆實現他們的喜好。

+0

這沒有提到緩存,這是一個非常重要的因素。您無法在每個請求中從遠程服務器加載jQuery! – Peter 2011-03-26 21:03:53

+1

他們至少使用內部庫。他們已經向公衆發佈了一個,他們的[動畫庫](http://developers.facebook.com/blog/post/67/)。 – 2011-03-26 21:05:11

+6

@Peter,Facebook可以在他們自己的服務器上託管jQuery。即使他們使用了Google的AJAX CDN,爲什麼它會被加載到每個請求上?它有時甚至會在有人訪問Facebook之前加載。 – 2011-03-26 21:06:08

0

他們需要如此高的性能和效率,jQuery不會削減它。他們需要一個完全適合他們需求的api,而不需要額外的未使用的代碼或功能。

+0

這可能是一個很好的理由。但不要告訴我Facebook的性能很好xD – dynamic 2011-03-26 21:01:28

+0

@ yes123 - 你不知道FB工程師面臨什麼樣的條件。 – 2011-03-26 21:02:28

+0

@jared:不,我從來沒有爲FB做過工作 – dynamic 2011-03-26 21:04:05

1

@ yes123:當你建立一個服務半個星球的網站時,你會開始跑到任何類型的框架往往最終施加的牆壁上。當你製作自己的定製框架,數據庫查詢語言等時,你可以更好地控制,並且可以真正做到優化每秒必須處理大量請求的站點。

當然還有其他一些考慮因素,如果你所做的一切都是開源的,公開可用的,那麼錯誤和固有的弱點也是如此。並非每個人都是如此無私以向架構或圖書館的原作者提交修補程序;有些人會用它來利用。如果您的資源基本上是封閉的和專有的,它會使惡意用戶的任務變得更加棘手。

在任何情況下,這是不是真的對StackOverflow的一個問題...

+0

@ yes123:那太棒了,但是特別注意SO的常見問題,這個問題並不完全屬於問題所在。 – stealthyninja 2011-03-26 21:12:47

+0

這讓我感到畏縮。在JavaScript中幾乎沒有什麼可以利用的,因爲它沒有安全性!它已經在您自己的瀏覽器中運行,您可以儘可能多地篡改代碼,這些代碼是完全可見的。而且你已經明白了:由於默默無聞的安全性從不起作用,而開源代碼通常更安全,因爲代碼庫是已知的。 – 2011-03-26 23:09:15

+0

@Ricardo Tomasi:我的整個答案是否讓你感到畏縮或者只是在提到與安全相關的開源軟件時引發這種下意識反應的部分? 「默默無聞的安全」本身顯然不是真正的安全,它是人們希望成爲一個多層次系統的又一層。 – stealthyninja 2011-03-26 23:49:26

2

如果你想知道我的意見:

我想唯一的原因是因爲Facebook在2003/2004 jQuery是出在這一點上已經太遲了,以至於不能將所有的js重新轉換成jQuery

相關問題