![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLxkDO4IzYyMDO4QDZkZWYjhzNwETNjZzYkBjNkJmM1cTO0IDN4EzN48CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
**
前言
2006年起,我已經以某種方式進行web應用開發。我開始為挪威最大的零售商開發web應用,先是使用javaserver pages(jsp)技術,之後換成javaserver faces(jsf)。當時這些技術很不錯,并能讓使用者達到使用目的。在那時(ajax流行之前),http的請求-響應周期要求将大多數處理邏輯放在伺服器端,伺服器端在每次請求中傳遞所有标記、腳本和樣式表給浏覽器。
雖然以伺服器端方式開發web應用也能行之有效,但狀态問題總是繞不開的。由于伺服器端要求記住所有登入使用者,管理狀态很快就成為一個棘手而占用大量記憶體的任務。要如何處理使用者打開多個标簽頁并在彼此間進行切換?跨多個(虛拟)機器延展服務的時候如何持久化會話資料?如果在伺服器端存儲使用者狀态,那又如何以一緻方式友善地進行水準擴充?處理起來真不容易。
當我開始從事開源項目montric(那時叫eurekaj),我很快決定,如果想要在不借助獨立的會話緩存的情況下水準擴充應用,我就得掌握一個具備良好前景和流行度的javascript架構。
随着sproutcore開發團隊被收購以及該架構放慢了發展腳步,sproutcore社群開始發生了變化,sproutcore 2.0版進展順利,但老版本與新版本間的裂痕卻在擴大,最終,sproutcore産生了一個新的分支——ember.js。
ember.js依托能夠提供優良web體驗的技術而打造,它能夠幫助開發者使用既有技能組合開發javascript應用程式。ember.js并不抽象或隐藏javascript、html或者css的實作細節,反而與時俱進地充分利用這些技術。
**[第一部分 ember.js基礎
第1章 發力雄心勃勃的web應用
<a href="https://yq.aliyun.com/articles/95448">1.2 從靜态頁面到ajax、再到全功能web應用</a>
1.2.1 異步web應用的興起
1.2.2 ember.js模型
<a href="https://yq.aliyun.com/articles/95459">1.3 ember.js概覽</a>
1.3.1 ember.js特性
1.3.2 ember.js應用程式結構
<a href="https://yq.aliyun.com/articles/95504">1.4 第一個ember.js應用程式:記事本應用</a>
1.4.1 記事本應用開發起步
1.4.2 建立命名空間與路由器
1.4.3 定義應用程式路由
1.4.4 建立并列出事項
1.4.5 選擇并檢視單條事項
1.4.6 删除事項
<a href="https://yq.aliyun.com/articles/95514">1.5 小結</a>
**[第2章 ember.js風格
<a href="https://yq.aliyun.com/articles/95542">2.2 自動更新模闆</a>
<a href="https://yq.aliyun.com/articles/95552">2.3 計算屬性</a>
<a href="https://yq.aliyun.com/articles/95563">2.4 觀察者模式</a>
<a href="https://yq.aliyun.com/articles/95569">2.5 ember.js對象模型</a>
<a href="https://yq.aliyun.com/articles/95573">2.6 ember.js實作各層間資料同步</a>
<a href="https://yq.aliyun.com/articles/95578">2.7 小結</a>