2012-01-20 73 views
11

我通過this article發現了Ember.js。Ember.js代碼概述

粗略瀏覽一下文檔可以得到一個非常令人印象深刻的工具。粗略瀏覽源代碼會發現一個怪物。源代碼的「編譯」版本接近15000行代碼,GIT repo中散佈着大量文件。

如果我覺得我至少沒有對代碼的全局理解,我不想開始學習JavaScript框架。 (jQuery或Backbone的質量之一是代碼庫相對簡單。)

對於導航(並最終理解)代碼,您有任何建議嗎?

+5

值得注意的是,任何顯着大小的框架通常都會被分解到多個文件中。即使更小的jQuery也會分裂。正如@ebryn解釋的那樣,它實際上都組織得非常好。此外,由於Ember具有比jQuery和Backbone更多的功能,所以它的體積更大並不奇怪。 –

+3

導航代碼,起點在這裏:https://github.com/emberjs/ember.js/tree/master/packages –

回答

31

Ember.js由幾個包,包括最相關的:

  • 燼金屬
  • 燼運行時
  • 燼的視圖
  • 燼車把
  • 燼路由

它也有一對捆綁依賴關係:

  • 把手
  • 的Metamorph

金屬包括幾個基礎技術:觀察員,綁定,計算性能和運行循環。

運行時提供了Ember對象系統以及一些有用的類。該對象系統由許多以金屬實現的基礎技術構建而成,但以更簡潔的方式嚮應用程序開發人員公開。

這個ember-views包非常明瞭,它是建立在運行時之上的Ember視圖系統。最重要的是,依賴於餘燼視圖的ember-handlebars包在Handlebars模板系統上提供了自動更新模板。

ember-routing包提供了負責維護應用程序結構和狀態的系統。它允許將視圖連接到應用程序的特定部分以及在狀態之間轉換。欲瞭解更多詳情,請參閱Router code source

有關把手的更多信息,請查看Handlebars website

是由Yehuda和Tom編寫的一個小型庫,它爲Ember提供了更新DOM的特定部分的能力,從而實現了Ember的DOM綁定功能。

+21

也值得注意的是,Ember。js有豐富的文檔記錄,我們發佈的unminified ember.js包含該文檔。 我對編譯後的源代碼運行cloc(代碼行計數器),得到3,214個空行,4,800行註釋和7,328行代碼。另請注意,編譯後的源代碼包含Handlebars.js,該代碼包含1,314行代碼(它包含Jison解析器生成器的編譯後輸出)。這使得Ember.js大約有6000行的實際代碼。 這顯然不像Backbone那麼小,但是Ember比Backbone還要多... –