前言
第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
· · · · · · (
收起)