內容簡介
本書秉承“實戰”系列圖書的一貫風格,以解決開發 者實際問題為出發點,通過Meteor平台構建可擴展的高性能套用。書中詳細介紹了如何用Meteor進行全棧開發,涵蓋了Meteor棧的所有關鍵部分,涉及構成Meteor棧的各種組件和概念、回響性套用的基本模組和套用的構建與合理部署等,讓讀者全面掌握如何充分發揮Meteor在伺服器端和可擴展性上的優勢。
圖書目錄
序
關於本書
關於封面插圖
前言
致謝
第 一部分 看,一顆流星!
第 1 章 構建應用程式的更好方式 ............... 2
1.1 Meteor 簡介 .............................................. 3
1.1.1 Meteor 背後的故事 ....................... 3
1.1.2 Meteor 棧 ....................................... 4
1.1.3 同構框架:全棧式JavaScript ....... 5
1.1.4 在瀏覽器中處理:在分散式平
台上運行 ....................................... 7
1.1.5
回響式編程 ................................... 8
1.2 Meteor 的工作原理 .................................. 10
1.2.1 核心項目 ...................................... 11
1.2.2 Isobuild 和CLI 工具 .................... 13
1.2.3 客戶端代碼和伺服器端代碼 ........ 14
1.3 優勢和劣勢 .............................................. 15
1.3.1 使用Meteor 的好處 ..................... 16
1.3.2 使用Meteor 時的挑戰.................. 17
1.4 創建新的應用程式 .................................. 19
1.4.1 創建新項目 .................................. 19
1.4.2 啟動套用 ...................................... 20
1.5 剖析默認項目 .......................................... 21
1.5.1 helloWorld.css .............................. 21
1.5.2 helloWorld.html ........................... 21
1.5.3 helloWorld.js ................................ 22
1.6 總結 ......................................................... 24
第 2 章 我的冰櫃:一個回響式遊戲 .......... 25
2.1 套用概述 .................................................. 25
2.2 初始設定 .................................................. 26
2.3 創建布局 .................................................. 27
2.3.1 設定樣式 ...................................... 27
2.3.2 添加模板 ...................................... 29
2.4 向資料庫中實時添加內容 ....................... 31
2.4.1 在資料庫中存儲物品 ................... 31
2.4.2 將數據連線到模板 ....................... 33
2.4.3 添加一組預定義的物品 ............... 35
2.5 把物品放進冰櫃里 .................................. 36
2.5.1 為項目添加jQuery UI ................. 36
2.5.2 為物品定義拖放目標 ................... 37
2.5.3 允許物品被拖動 .......................... 39
2.6 部署套用到meteor.com 並使用它 .......... 40
2.7 總結 ......................................................... 40
第 二部分 3,2,1——撞擊!
第3 章 模板 .................................................... 42
3.1 模板介紹 .................................................. 42
3.2 使用模板 .................................................. 44
3.2.1 Blaze 引擎 .................................... 44
3.2.2 組織模板檔案 .............................. 45
3.3 創建
動態HTML 模板 ............................. 45
3.3.1 雙重和三重大括弧標籤(表達式) ........................ 46
3.3.2 包含標籤(局部模板) ............... 48
3.3.3 塊標籤 .......................................... 50
3.3.4 輔助函式 ...................................... 53
3.4 處理事件 .................................................. 58
3.4.1 模板的事件映射 .......................... 58
3.4.2 事件傳播 ...................................... 59
3.4.3 阻止瀏覽器的默認行為 ............... 60
3.5 模板生命周期 .......................................... 61
3.6 總結 ......................................................... 63
第4 章 數據 .................................................... 64
4.1 Meteor 的默認數據源 .............................. 66
4.1.1 什麼使數據源具有回響性 ........... 67
4.1.2 如何將回響式數據連線到函式............ 68
4.2 構建房屋保姆套用 .................................. 69
4.2.1 設定模板 ...................................... 71
4.2.2 連線到資料庫並聲明集合 ........... 71
4.3
Session 對象 ......................................... 72
4.3.1 Session 對象簡介 ..................... 73
4.3.2 使用Session 存儲選定的下拉值................... 73
4.3.3 使用Tracker.autorun 創建回響性上下文 ........... 75
4.4 MongoDB 集合 ........................................ 76
4.4.1 在MongoDB 中查詢文檔 ............ 77
4.4.2 Meteor 的集合 .............................. 78
4.4.3 初始化集合 .................................. 78
4.4.4 查詢集合 ...................................... 79
4.4.5 在模板中顯示集合數據 ............... 80
4.4.6 在集合中更新數據 ....................... 83
4.4.7 向集合中插入新數據 ................... 85
4.4.8 從集合中刪除數據 ....................... 87
4.5 總結 ......................................................... 88
第5 章 全回響式編輯 ................................... 89
5.1 回響式編輯的工作流程 ........................... 89
5.2 回響式前端與DOM操作 ........................ 90
5.3 在本地集合中進行臨時更改 ................... 94
5.4 在表單中顯示集合數據 ........................... 97
5.5 使用本地集合進行回響式更新 ............. 100
5.5.1 houseForm 模板的事件映射 ..................... 101
5.5.2 plantFieldset 模板的事件映射 ....... 102
5.6 實現一個簡單的通知系統 ..................... 105
5.6.1 添加通知模板 ............................ 106
5.6.2 添加狀態屬性 ............................ 106
5.6.3 使用會話變數觸發通知 ............. 107
5.7 總結 ....................................................... 109
第6 章 用戶、認證和許可權......................... 110
6.1 將用戶加入套用 .................................... 111
6.1.1 添加密碼認證 ............................ 111
6.1.2 註冊和密碼重置 ........................ 113
6.1.3 設定郵件 .................................... 117
6.2 使用OAuth 認證用戶 ........................... 120
6.2.1 OAuth 介紹 ................................ 121
6.2.2 整合Facebook 認證 ................... 122
6.2.3 集成其他的OAuth 提供者 ........ 126
6.3 管理用戶許可權、角色和組 ..................... 127
6.4 總結 ....................................................... 130
第7 章 數據交換 ......................................... 131
7.1 發布和訂閱 ........................................... 132
7.1.1 publish()和subscribe() .. 133
7.1.2 全局訂閱 .................................... 134
7.1.3 模板級訂閱 ................................ 135
7.1.4 參數化訂閱 ................................ 136
7.1.5 向客戶端獨有的集合發布匯總數據....................... 138
7.1.6 將聚合發布變成回響式數據源 ..................... 141
7.1.7 通過用戶ID 限制數據可見性 ........................ 143
7.2 Meteor 的方法 ....................................... 145
7.2.1 刪除insecure 包 .................... 146
7.2.2 使用方法將數據寫入集合 ......... 147
7.3 總結 ....................................................... 150
第8 章 路由 .................................................. 151
8.1 Web 套用中的路由 ................................ 151
8.2 客戶端路由 ........................................... 154
8.2.1 添加Iron.Router .................. 155
8.2.2 創建第 一個路由 ........................ 155
8.2.3 基於路由定義布局 .................... 157
8.2.4 根據路由設定數據上下文 ......... 161
8.2.5 使用Iron.Router 訂閱數據 ................................ 163
8.3 高 級的路由方法 .................................... 166
8.3.1 使用命名路由和連結輔助函式 ................................ 166
8.3.2 讓活動路由有更好的導航連結 ............... 167
8.3.3 等待外部庫載入 ......................... 168
8.3.4 將路由組織為控制器 ................. 169
8.3.5 使用鉤子擴展路由過程 ............. 171
8.3.6 創建Iron.Router 外掛程式 .......... 172
8.4 用於REST API 的伺服器端路由 .......... 173
8.5 總結 ....................................................... 175
第9 章 包 ....................................................... 176
9.1 所有套用的基礎 .................................... 176
9.2 使用Isopack .......................................... 177
9.2.1 版本求解器和有語義的版本號 ...................... 178
9.2.2 查找包 ........................................ 179
9.2.3 添加和刪除Isopack ................... 182
9.2.4 更新包 ........................................ 183
9.3 使用npm 包 ........................................... 183
9.4 創建Isopack .......................................... 184
9.4.1 創建包 ........................................ 185
9.4.2 聲明包的元數據 ......................... 186
9.4.3 添加包的功能 ............................ 188
9.4.4 使用tinytest 測試Isopack ......................... 191
9.4.5 發布 ............................................ 194
9.5 總結 ............................................. 195
第 10 章 高 級伺服器方法 ........................... 196
10.1 再次介紹Node.js ................................. 196
10.1.1 同步代碼 ................................ 197
10.1.2 異步代碼 ................................ 198
10.2 使用纖維的異步功能 ........................... 200
10.2.1 將多任務引入事件循環 ......... 200
10.2.2 使用wrapAsync 為纖維綁定回調函式 ............... 203
10.2.3 為單個客戶端解除方法調用阻塞 ...................... 204
10.2.4 使用bindEnvironment創建纖維 ............... 206
10.3 整合外部API ....................................... 207
10.3.1 使用HTTP 包進行RESTful調用 ............... 208
10.3.2 使用同步方法查詢API .......... 208
10.3.3 使用異步方法調用API .......... 209
10.4 將檔案上傳到集合 .............................. 211
10.5 總結 ...................................... 215
第三部分 走出隕石坑
第 11 章 構建和調試 ................................... 218
11.1 Meteor 的構建過程 .............................. 218
11.1.1 構建階段 ................................ 220
11.1.2 使用--production 選項運行 ................... 223
11.1.3 載入順序 ................................ 223
11.1.4 通過包添加構建階段 ............. 226
11.1.5 添加自定義構建階段 ............. 227
11.2 訪問正在運行的套用........................... 229
11.2.1 使用互動式伺服器外殼 ......... 229
11.2.2 使用node-inspector進行調試 .................... 230
11.3 創建瀏覽器套用 .................................. 232
11.3.1 使用Meteor.settings進行套用配置 ................ 232
11.3.2 構建Meteor 項目 ................... 233
11.4 創建移動套用 ...................................... 235
11.4.1 使用Cordova 的混合套用 ..... 235
11.4.2 加入移動平台 ........................ 236
11.4.3 配置移動套用 ........................ 238
11.4.4 添加移動功能 ........................ 240
11.5 總結 ..................................................... 242
第 12 章 開始生產 ....................................... 243
12.1 準備生產 .............................................. 243
12.1.1 使用版本控制 ........................ 243
12.1.2 功能測試:Velocity 框架 ...... 245
12.1.3 估算和測試負載 ..................... 247
12.1.4 伺服器管理 ............................ 249
12.1.5 清單 ........................................ 250
12.2 安裝和部署 .......................................... 250
12.2.1 **簡單的部署:meteor.com ........................ 251
12.2.2 無所不包的主機:雲供應商 .................... 253
12.2.3 **靈活的方式:手動設定 .......................... 256
12.3 將各部分連線起來 .............................. 259
12.3.1 環境變數 ................................ 260
12.3.2 Meteor和MongoDB的連線 ............................. 260
12.4 擴展策略 .............................................. 261
12.4.1 使用冗餘的主動被動高可用性 ............................ 262
12.4.2 單組件部署 ............................ 263
12.4.3 冗餘和負載均衡 .................... 263
12.4.4 絕 對可用性 ............................ 265
12.5 總結 ..................................................... 266
附錄A 安裝Meteor .................................... 267
附錄B MongoDB 剖析 .............................. 271
附錄C 設定nginx ....................................... 278