從最初的SproutCore、Amber.js到現如今的Ember.js,幾經更名的Ember.js于近日在其官方博客上宣布同時發布Ember.js 1.7.0正式版和1.8第一個測試版本,屈指算來,從2013年8月發布1.0正式版,一年的時間,Ember.js已經經歷了7次主要版本更新,更逐漸發展成為最受開發者喜愛的一大框架。
作為一款開源的JavaScript MVC框架,Ember.js采用了基于字符串的Handlebars模板,支持雙向綁定、觀察者模式、計算屬性(依賴其他屬性動態變化)、自動更新模板、路由控制、狀態機等。更使用自身擴展的類來創建Ember.js對象、數組、字符串、函數,提供大量方法與屬性用于操作。每一個Ember.js應用都使用各自的命名空間,以避免發生沖突。
此次更新除了對一些Bug進行修復,Ember.js還帶來了一系列的新特性,比如針對查詢參數提供URL查詢參數API支持,并移除了僅限this.resource嵌入子路由的約束,this.route可以像this.resource那樣被嵌入,但不同于this.resource的是,無需再重置子路由namespace:
this.route('foo', function() { this.route('bar', function() { this.route('baz', function() { // uses FooBarBazRoute // generates foo.bar.baz.index // generates FooBarBazIndexRoute }); }); });
此外,1.7.0還包含了以下重要變化:控制器內容屬性變更為來自模型,以減少模型/內容警告,同時還設置了一個永不設置控制器內容,默認設置模型的程序規則;bind-attr中,空數組處理由truthy改為falsy,以使其與if保持一致。
而在1.8 Beta1中,Ember移除了根控制器中對于舊版操作查詢的支持,開發者可以直接使用任何相近的操作名稱,而無需再檢查該名稱是否被控制器所使用。并對視圖層的內部實現進行了重構,在DOM中移除對于script標記的需求:
<script id="metamorph-1-start" type="text/x-placeholder"></script> <script id="metamorph-1-end" type="text/x-placeholder"></script>現在,您還可以進入Ember.js的mobilehub主頁進行資源分享和討論。開發者可直接登陸GitHub下載Ember.js 1.7.0或1.8 Beta 1,想要了解Ember.js更新詳情,請查看Ember.js 1.7.0和1.8 Beta 1 ChangeLog。