Twitter 開源了 Flight,這是該公司內部用于產品中的、為網站提供功能的 Javascript 框架。
Twitter Flight 是基于事件的框架,可用于為現有 DOM 結構添加功能。Flight 既不用于建模數據,也不用于 HTML 渲染,它不處理請求路由和頁面模版,也不處理瀏覽器或服務器端的渲染。相反,它是一款高度解耦和的組件框架,這些組件連接到 DOM 節點,當在節點上調用事件時,可以提供預期的功能。
Flight 組件完全不知道其他組件的存在,一個組件也不能持有指向另一個組件的引用。組件是分別定義的,當它們被連接到節點時才會創建實例。組件會持有所連接節點的引用。之后為事件注冊組件,事件會使用 DOM 的事件機制進行發送和接收。在接收到事件時,組件并不知道事件是來自節點還是來自另一個組件。它只是執行在組件定義時確定的、與各個事件關聯的功能。
借助這種事件機制,Flight 支持開發者編寫、測試和調試解耦和的組件,而無需依賴其他組件。即便其他組件出現問題,當前組件應該還能工作。
該框架也定義了 mixin,這是可以在組件和其他 mixin 間共享的小功能片段。Mixin 和面向對象語言(如 Java 或C#)中的接口比較相似。
去年,Twitter 在對其網站進行更新時開始在產品中使用 Flight。現在 Twitter 基于 MIT 許可證開放了 Flight 的源代碼,同時提供了一個演示應用,還提供了用于解釋如何設置 Flight、如何開始創建、測試和調試組件的文檔。
Flight 也依賴其他框架,包括使用 ES5-shim 來支持較老的瀏覽器,使用 JQuery 的 DOM 操作 API。該框架支持所有主要瀏覽器,包括 Firefox、Safari、Chrome、Opera 和 IE7+。
查看英文原文:Twitter Open Sources Flight, an Event-based Component framework