Ember.Js v2.10.0-beta.3 發布,一個JavaScript框架

jopen 8年前發布 | 5K 次閱讀 DOM JavaScript Ember.js

 

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請求還是用戶執行操作,你的用戶界面總會保持實時更新。這消除了一大類開發人員每天為之掙扎的邊緣情況。

 

更新日志

  • #14537 [BUGFIX] Improve behavior for QPs with undefined values
  • #14545 [BUGFIX] Refactor loading/error substates. Fixes a number of issues with substate usage with ember-engines.
  • #14571 [BUGFIX] Prevent errors in watching infrastructure for non-object paths.
  • tildeio/router.js#197 [BUGFIX] Fix redirects performed during the routers validation stages. Properly 

下載

本站原創,轉載時保留以下信息:
本文轉自:深度開源(open-open.com)
原文地址:http://www.baiduhome.net/news/view/2ebd6d4b

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!