前言
第1章 環境配置與工具準備1
1.1 Shell1
1.2 管道7
1.3 幾個常用命令9
1.3.1 文件查找命令find9
1.3.2 網絡命令curl11
1.3.3 文件搜索grep13
1.3.4 定時任務crontab14
1.3.5 JSON查詢利器jq15
1.4 編輯器18
1.4.1 Vim編輯器18
1.4.2 Sublime Text編輯器23
1.5 程序啓動器26
1.5.1 Launchy27
1.5.2 Alfred27
1.6 關於Windows29
第2章 Web應用服務器30
2.1 Rack30
2.1.1 rackup32
2.1.2 Rack中間件36
2.2 Sinatra39
2.2.1404頁麵39
2.2.2 使用模闆引擎44
2.2.3 簡單認證中間件46
2.3 Grape47
第3章 數據庫訪問層56
3.1 數據庫的訪問56
3.2 數據庫方案(schema)的修改57
3.3 ActiveRecord59
3.3.1 和Rails一起使用59
3.3.2 獨立使用(在既有數據庫中)65
3.3.3 校驗70
3.4 DataMapper76
第4章 客戶端框架80
4.1 富客戶端80
4.2 Backbone.js簡介83
4.2.1 模型83
4.2.2 視圖85
4.2.3 集閤91
4.2.4 與服務器交互94
4.2.5 路由錶95
4.3 Angular.js98
4.3.1 數據雙嚮綁定98
4.3.2 內置指令100
4.3.3 AngularJS中的服務101
4.3.4 與RESTFul的API集成105
4.3.5 與moko集成106
第5章 CSS框架簡介108
5.1 Foundation簡介108
5.2 BootStrap簡介117
5.2.1 布局118
5.2.2 常用組件121
第6章 客戶端測試框架130
6.1 Jasmine簡介130
6.1.1 Spy功能131
6.1.2 自定義匹配器133
6.2 Mocha134
6.2.1 Mocha的基本用法135
6.2.2 測試異步場景137
第7章 現代的前端開發方式140
7.1 Karma簡介140
7.2 前端依賴管理141
7.3 搭建工程143
7.4 測試驅動開發146
7.5 實例Todoify147
7.5.1 underscore的一些特性148
7.5.2 jQuery插件基礎知識150
7.5.3 Todoify151
7.5.4 進一步改進159
第8章 編寫更容易維護的JavaScript代碼161
8.1 一個實例161
8.2 重構:更容易測試的代碼165
8.2.1 搜索框166
8.2.2 發送請求167
8.2.3 結果集168
8.2.4 放在一起171
8.3 關注點分離:另一種實現方式174
8.3.1 搜索服務175
8.3.2 結果視圖175
8.3.3 搜索框視圖176
8.3.4 搜索邏輯176
8.3.5 放在一起177
8.3.6 更容易測試的代碼178
第9章 本地構建180
9.1 Ruby中的構建180
9.1.1 Rake180
9.1.2 Guard185
9.2 JavaScript中的構建187
9.2.1 Grunt的使用187
9.2.2 Gulp的使用192
第10章 持續集成196
10.1 環境搭建196
10.1.1 安裝操作係統196
10.1.2 安裝Jenkins199
10.1.3 安裝rbenv200
10.1.4 安裝NodeJS201
10.1.5 安裝Xvfb202
10.2 持續集成服務器203
10.3 與Github集成210
10.3.1 Travis211
10.3.2 Snap213
第11章 單元測試與集成測試215
11.1 RSpec單元測試215
11.2 集成測試工具Selenium221
11.2.1 Selenium—webdriver222
11.2.2 Capybara223
11.2.3 Cucumber224
11.3 搭建Selenium獨立環境230
11.3.1 安裝Selenium230
11.3.2 服務腳本230
第12章 環境搭建的自動化233
12.1 自動化工具Chef234
12.1.1 使用Berkshelf管理cookbook234
12.1.2 自動創建用戶236
12.1.3 安裝nginx服務器237
12.1.4 配置nginx239
第13章 應用程序發布244
13.1 使用Heroku發布應用程序244
13.2 發布到虛擬機環境249
13.2.1 使用密鑰登錄249
13.2.2 使用Mina250
13.3 服務器典型配置254
第14章 一個實例(前端部分)259
14.1 綫框圖259
14.2 搜索結果頁麵261
14.2.1 模闆頁麵262
14.2.2 導航欄263
14.2.3 走馬燈264
14.2.4 搜索框266
14.2.5 目錄側欄266
14.2.6 植物列錶267
14.2.7 分頁器268
14.3 詳細信息頁麵270
14.4 加入JavaScript271
14.4.1 moko273
14.4.2 AngularJS應用275
14.4.3 細節頁麵279
第15章 一個實例(後颱部分)283
15.1 第一個迭代284
15.1.1 配置環境284
15.1.2 定義數據285
15.1.3 第一次提交288
15.1.4 添加數據289
15.2 發布到Heroku291
15.2.1 環境準備292
15.2.2 添加數據庫插件292
15.2.3 測試遠程應用293
15.2.4 訪問遠程數據294
15.2.5 導齣數據295
15.3 更進一步296
15.3.1 模塊化的Sinatra應用296
15.3.2 測試297
第16章 一個實例(集成)304
16.1 發布307
16.1.1 添加植物頁麵308
16.1.2 一個奇怪的bug310
16.2 添加圖片313
16.2.1 後颱API314
16.2.2 客戶端上傳文件315
16.3 新的問題321
16.4 文件存儲323
16.4.1 創建分組及用戶323
16.4.2 創建S3中的bucket325
16.4.3 存儲到雲端326
16.4.4 部署到Heroku328
附錄A Web如何工作330
A.1 CGI的相關背景330
A.2 配置Apache支持CGI331
A.3 更進一步332
A.4 一個稍微有用的腳本333
A.5 更進一步FastCGI334
附錄B Angular.js的測試335
B.1 測試Controller335
B.1.1 AngularJS的一個典型Controller335
B.1.2 測試依賴於Service的Controller336
B.1.3 在何處實例化Controller337
B.1.4 如何mock一個service338
B.2 測試Service339
B.2.1 Service的典型示例339
B.2.2 $httpBackend服務339
B.2.3 Service的測試模闆341
B.2.4 服務器Moco342
· · · · · · (
收起)