Ember.Js v2.10.1 發布,一個JavaScript框架
Ember 是一個旨在創建非凡web應用的JavaScript框架,它消除了樣板(boilerplate)并提供了標準的應用程序架構。
消除樣板
每個web應用中都會有些常規的任務。例如,從服務器取數據、將數據渲染到屏幕、然后當數據變更時更新信息。由于瀏覽器能夠提供的完成該任務的工具太過原始,致使你一遍一遍地書寫相同的代碼。Ember.js提供的工具可以讓你專注于你的app,而不是重復地編寫已經寫過無數次的代碼。因為我們自己已經創建過數十個應用,我們已經遠遠超越了明顯低級的事件驅動(event-driven)的抽象概念,消除了大量貫穿于應用當中的、與傳播變化相關聯的樣板,尤其是DOM本身。為了幫助你管理視圖(view)中的變更,Ember.js內置了一個模板引擎,當底層的對象發生改變時它可以自動地更新DOM。與其他任何的模板系統類似,模板初始渲染時會影響到person的當前狀態。然而,為了避免樣板,當person的name更新時Ember.js也會為你自動更新DOM。一次性指定模板,Ember.js就會確保它實時更新。
提供架構
由于web應用是由web頁面演變而來,其不過是靜態文檔而已,瀏覽器已賦予你充分的能力去做任何想做的事。Ember可以讓你很容易地將應用劃分為模型(models),視圖(views)和控制器(controllers),從而提高了可測性,使代碼更加模塊化,并且幫助項目中的新手快速理解各部分的結合原理。意面式的回調(callback spaghetti)時代結束了。Ember同樣提供了內置的對狀態管理的支持,從而可以描述你的應用程序在各種不同的嵌套狀態(比如登入登出,瀏覽文章,查看評論)間的流轉。
Ember.js 有何不同?
傳統的web應用迫使用戶在每次與服務器交互時都得下載一個新頁面。這意味著每次交互的時間不可能比你到用戶之間的延時更快了,并且往往更慢。使用AJAX替換頁面中的一些部分,在一定程度上起到了作用,但是在每次UI需要更新時,仍然需要一次到服務器的往返。并且如果頁面中的許多部分需要同時更新,絕大部分開發者又會采取重新載入頁面的方式了,因為若想保持每個部分都同步還真是個技術活。與一些其他的現代JavaScript框架類似,Ember.js的工作方式略有不同。Ember.js應用會在頁面初始載入時將所需全部加在,而不是將大多數應用邏輯存放于服務器端。這意味著當用戶使用你的app時,她完全不必載入新頁面,并且你的UI會快速響應交互操作。這種架構的一個優點就是,你的web應用與本地(native)應用或者第三方客戶端使用相同的REST API。后端開發者可以專注于構建一個快速,穩定,安全的API服務器,并且也不需要前端經驗。
Ember.js 概覽
三個法寶讓你快樂地使用Ember:
- 綁定(Bindings)
- 計算屬性(Computed properties)
- 自動更新模板(Auto-updating templates)
綁定
使用綁定可以使兩個不同對象的屬性保持同步。你只需一次性聲明綁定,然后Ember就會確保變更的雙向傳播。綁定允許你以MVC(Model-View-Controller)模式架構你的應用,然后即可高枕無憂了,數據將永遠正確地在層與層之間流動。
計算屬性
計算屬性非常有用,因為它可以像其他任何屬性一樣與綁定一起使用。許多計算出的屬性依賴于其他屬性。許多計算出的屬性依賴于其他屬性。
自動更新模板
模板是可感知綁定(bindings-aware)的。意思就是如果你改變了已經告知我們需要顯示的屬性值,我們會為你自動更新。并且由于你指定了依賴關系,對那些屬性的更改也會體現出來。
這三個強大的工具是如何配合工作的:從一些原始的屬性開始,然后使用計算屬性構造一些更復雜的屬性及其依賴關系。一旦你描述出數據,就只需要一次性指明數據是如何顯示的,然后Ember即可幫你完成其余的任務。底層數據是如何改變的并不重要,不管是從XHR請求還是用戶執行操作,你的用戶界面總會保持實時更新。這消除了一大類開發人員每天為之掙扎的邊緣情況。
下載
本站原創,轉載時保留以下信息:
本文轉自:深度開源(open-open.com)
原文地址:http://www.baiduhome.net/news/view/4c5f833f