第一部分 Ember.js基礎
第1章 發力雄心勃勃的Web應用 2
1.1 Ember.js適用場景 3
1.2 從靜態頁面到Ajax、再到全功能Web應用 4
1.2.1 異步Web應用的興起 5
1.2.2 Ember.js模型 6
1.3 Ember.js概覽 6
1.3.1 Ember.js特性 7
1.3.2 Ember.js應用程序結構 7
1.4 第一個Ember.js應用程序:記事本應用 9
1.4.1 記事本應用開發起步 11
1.4.2 創建命名空間與路由器 13
1.4.3 定義應用程序路由 14
1.4.4 創建并列出事項 16
1.4.5 選擇并查看單條事項 19
1.4.6 刪除事項 23
1.5 小結 28
第2章 Ember.js第2章 Ember.js風格 29
2.1 綁定對象 30
2.2 自動更新模板 33
2.3 計算屬性 35
2.4 觀察者模式 38
2.5 Ember.js對象模型 39
2.6 Ember.js實現各層間數據同步 41
2.7 小結 42
第3章 使用Ember.js路由器融合應用結構 43
3.1 Ember.js實戰博客介紹 44
3.2 服務器端模型-視圖-控制器模式的困境 46
3.2.1 Ember MVC模式 47
3.2.2 將各層組合起來 48
3.3 Ember路由器:Ember.js的狀態圖 49
3.4 Ember.js實戰博客第一部分:博客索引頁 52
3.4.1 創建博客路由器 52
3.4.2 添加視圖和模板 55
3.4.3 顯示博客文章列表 56
3.5 Ember.js實戰博客第二部分:添加博客文章路由 59
3.6 依賴注入與Ember容器 65
3.6.1 使用needs屬性連接控制器 65
3.6.2 通過Ember容器連接對象 66
3.7 小結 68
第4章 通過Handlebars.js自動更新模板 69
4.1 模板是什么 69
4.1.1 簡單表達式 70
4.1.2 塊表達式 71
4.2 內置塊表達式 73
4.2.1 if及if-else塊表達式 73
4.2.2 {{unless}}塊表達式 74
4.2.3 {{with}}塊表達式 74
4.2.4 Handlbars.js的注釋 75
4.3 結合使用Handlebars.js與Ember.js 75
4.3.1 在index.html中定義模板 76
4.3.2 直接在Ember.TEMPLATES散列中定義模板 77
4.3.3 創建Handlebars.js模板支持的Ember.js視圖 77
4.4 Ember.js提供的Handlebars.js表達式 78
4.4.1 {{view}}表達式 79
4.4.2 {{bind-attr}}表達式 80
4.4.3 {{action}}表達式 81
4.4.4 {{outlet}}表達式 83
4.4.5 {{unbound}}表達式 84
4.4.6 {{partial}}表達式 84
4.4.7 {{link-to}}表達式 85
4.4.8 {{render}}表達式 85
4.4.9 {{control}}表達式 86
4.4.10 {{input}}和{{textarea}}表達式 87
4.4.11 {{yield}}表達式 88
4.5 創建自己的表達式 88
4.6 小結 89
第二部分 創建雄心勃勃的真實Web應用
第5章 獲取數據:使用Ember Data與服務器端交互 92
5.1 將Ember Data用作應用緩存 93
5.1.1 定義Ember Data模型 93
5.1.2 標識映射的Ember Data 94
5.1.3 模型對象間的關聯 96
5.1.4 模型狀態和事件 97
5.1.5 與后臺通信 99
5.2 初嘗Ember Data 100
5.2.1 從模型中獲取數據 101
5.2.2 在模型中指定關聯關系 101
5.3 Ember Data模型的關聯 103
5.3.1 了解Ember Data模型的
關聯關系 103
5.3.2 Ember Data端數據加載 106
5.4 自定義適配器和序列化器 108
5.4.1 編寫自定義適配器,但保留默認的序列化器 109
5.4.2 編寫自定義適配器和序列化器代碼 111
5.4.3 自定義URL 113
5.5 小結 113
第6章 繞過Ember Data與服務器端第6章 繞過Ember Data與服務器端交互 115
6.1 Ember Fest介紹 115
6.1.1 了解應用程序的路由器 117
6.1.2 使用model()鉤子函數獲取數據 117
6.1.3 實現標識映射 118
6.2 獲取數據 119
6.2.1 通過find()函數返回指定演講數據 120
6.2.2 通過findAll()函數獲取所有演講數據 121
6.2.3 實現Emberfest.Talk模型類 121
6.3 數據持久化 124
6.3.1 通過createRecord()函數提交新的演講 124
6.3.2 通過updateRecord()函數修改演講數據 127
6.3.3 通過delete()函數刪除演講數據 130
6.4 小結 131
第7章 編寫自定義第7章 編寫自定義組件 133
7.1 關于Ember自定義組件 134
7.2 實現可選列表 134
7.2.1 定義selectable-list組件 137
7.2.2 selectable-list-item組件 138
7.2.3 delete-modal組件 140
7.2.4 通過已完成的三個組件刪除具體項 141
7.3 實現樹形菜單 144
7.3.1 樹形菜單的數據模型 144
7.3.2 定義tree-menu組件 145
7.3.3 定義tree-menu-item和tree-menu-node組件 145
7.3.4 單選功能支持 147
7.4 小結 150
第8章 測試Ember.js應用第8章 測試Ember.js應用 程序 152
8.1 使用QUnit和PhantomJS進行單元測試 153
8.1.1 Qunit介紹 154
8.1.2 使用PhantomJS在命令行執行測試 156
8.1.3 集成QUnit和PhantomJS 157
8.2 使用QUnit編寫簡單的Ember.js單元測試 160
8.3 集成測試 164
8.3.1 Sinon介紹 165
8.3.2 添加新告警信息的集成測試 166
8.4 通過Ember.Instrumentation進行性能測試 168
8.5 小結 169
第三部分 高級Ember.js主題
第9章 使用Mozilla Persona進行第9章 使用Mozilla Persona進行認證 172
9.1 集成第三方認證系統 173
9.1.1 首次登錄及注冊 173
9.1.2 通過第三方認證提供者登錄Montric 177
9.2 通過HTTP cookie登錄用戶 180
9.3 小結 183
第10章 Ember.js運行循環——Backburner.js 185
10.1 什么是運行循環? 186
10.1.1 Ember.js TodoMVC應用程序介紹 186
10.1.2 解釋Ember.js運行循環 187
10.2 在運行循環框架下執行代碼 191
10.2.1 在當前運行循環中執行代碼 191
10.2.2 在下一個運行循環中執行代碼 192
10.2.3 在后續運行循環中執行代碼 193
10.2.4 在指定隊列執行代碼 194
10.2.5 通過運行循環執行重復任務 196
10.3 小結 197
第11章 打包與第11章 打包與部署 198
11.1 理解JavaScript應用程序打包和裝配 199
11.1.1 選擇目錄結構 199
11.1.2 組織自己編寫的源代碼 200
11.1.3 組織非JavaScript資源 202
11.1.4 Ember.js應用程序裝配過程 203
11.2 使用構建工具Grunt.js 204
11.2.1 為Montric應用程序引導Grunt.js構建系統 205
11.2.2 連接JavaScript代碼 206
11.2.3 抽取插件配置代碼到單獨文件 208
11.2.4 Lint常見錯誤 209
11.2.5 預編譯Handlebars模板 211
11.2.6 壓縮源文件 214
11.2.7 Grunt.js的優缺點 217
11.3 小結 218
Ember.js號稱是一個“雄心勃勃”的JavaScript MVC框架、現代JavaScript MVC框架代表,是構造如單頁面應用等現代Web應用程序的新型Web端開發框架。本書深入介紹了這一框架的方方面面。
全書分為三個部分。第一部分為基礎內容,共4章,引導讀者對Ember.js有個概括性認識,并掌握其基礎知識點,此部分包含兩個示例程序——注意事項應用程序與博客應用程序;第二部分包括第5章到第8章,涉及Ember.js實戰的幾個關注點,如Ember Data、自定義組件以及測試;第三部分為第9章到第11章,討論Ember.js的高級主題,如認證、運行循環和打包部署。