编辑推荐
延续畅销书《七周七语言》、《七周七数据库》的体例和风格
学习流行的Web开发框架:Sinatra、CanJS、AngularJS、Ring、Webmachine、Yesod和Immutant。
通过一本书认识和掌握7种主流的Web开发框架。
本书中的每一章都讨论了一个不同的Web框架,而且大部分都是不同的编程语言,目的是为你提供一些开发现代 Web 应用程序的全新理念、风格和技术。
内容简介
本书带领读者认识和学习7种影响现代Web应用并改娈了Web开发方式的框架,以期给Web开发者带来启发和思考。
本书延续了同系列的畅销书《七周七语言》、《七周七数据库》的体例和风格。全书共8章,前7章介绍了Sinatra、CanJS、AngularJS,Ring、Webmachine、Yesod和lmmutant共计7种Web开发框架,末章总结回顾了所有的知识点。书中对每一种框架的介绍,都为构建Web应用带来了独特而强大的思路。除此之外,书中还提供了一系列代码示例和在线资源以供参考。
本书适合有一定基础的Web开发人员阅读,能够帮助读者拓宽思路,激发更多的设计灵感。
作者简介
Jack Moffitt拥有使用不同语言、不同框架开发Web相关应用长达十年的经验。他是Mozilla研究所的高级研究工程师,他工作于Servo项目,正在开发一个试验性的新一代浏览器引擎。他还帮助创建了Ogg Vorbis格式,并且创建了Xiph.org基金会,这是一个非盈利的机构,致力于开源且完全免费的多媒体编解码器。
Fred Daoud是一位非常有热情的Web程序员,他喜欢尝试不同的新框架。他还是 Stripes …and Java Web Development Is Fun Again和Getting Started With Apache Click这两本Web框架书籍的作者。作为Modernizing Medicine的软件工程师,他使用Stripes、jQuery、YUI和CanJS进行日常开发。
内页插图
精彩书评
Web应用程序的迅速发展迫切需要创新的解决方案。了解各种框架以及它们独特的特性,将会启发并促使你在面对日常工作中的挑战时从一个新的角度去思考。
本书涵盖了7种影响现代Web应用并改变了Web开发方式的框架:Sinatra、CanJS、AngularJS、Ring、Webmachine、Yesod和Immutant。其中每一种框架都为构建Web应用带来了独特而强大的思路:
? 拥抱Sinatra的简单性,它摒弃了大框架的繁复,转而回归Ruby的基础。
? 在客户端依赖CanJS,你可以在浏览器中使用JavaScript来创建完整的应用。
? AngularJS强调声明式编程,将声明式的HTML和JavaScript的混合起来,只需要说你想要什么,而无需关心具体怎么做。
? Ring将Web变成数据,再使用Clojure来轻松操纵这些数据。
? Webmachine会让你成为高级HTTP的行家里手,并专注于Erlang的强大特性。
? 使用Yesod来证明Haskell的高级类型系统不仅仅是学院派的玩具。
? 使用高端的Immutant绝对是企业级框架的明智之举。
不论你现在使用的是哪种框架,这7种框架都会影响到你的工作。
目录
第1章 Sinatra 1
1.1 简单的领域特定语言 2
1.2 第1天:构建一个书签应用 2
1.2.1 你好,Sinatra 3
1.2.2 用RSpec来测试 4
1.2.3 REST风格的API 6
1.2.4 数据持久化 6
1.2.5 创建和读取书签 8
1.2.6 编写自动化测试 9
1.2.7 更新和删除书签 10
1.2.8 我们在第1天学到的 11
1.3 第2天:创建视图 12
1.3.1 ERB简介 12
1.3.2 Mustache介绍 17
1.3.3 Slim介绍 20
1.3.4 我们在第2天学到的 23
1.4 第3天:添加新功能 24
1.4.1 校验 24
1.4.2 块参数 26
1.4.3 过滤器 27
1.4.4 为书签打上标签 28
1.4.5 添加标签的API支持 31
1.4.6 使用正则表达式来匹配路由 33
1.4.7 我们在第3天学到的 34
1.5 总结 35
1.5.1 Sinatra的强项 35
1.5.2 Sinatra的弱项 35
1.5.3 最后的思考 36
第2章 CanJS 37
2.1 CanJS的独一二之处 37
2.2 第1天:创建对象和同步变化 39
2.2.1 你好,CanJS! 40
2.2.2 构建和扩展对象 41
2.2.3 观察属性的变化 44
2.2.4 使用CanJS创建一个前端书签应用 46
2.2.5 连接模型与服务器 47
2.2.6 渲染视图 48
2.2.7 动态绑定 50
2.2.8 我们在第1天学到的 50
2.3 第2天:创建控制器 51
2.3.1 将控制器绑定到页面元素上 52
2.3.2 监听UI事件 53
2.3.3 使用data()方法从页面获取数据模型 54
2.3.4 使用观察者实现控制器之间的沟通 55
2.3.5 创建一个表单控制器 57
2.3.6 我们在第2天学到的 60
2.4 第3天:与模型的协作 61
2.4.1 添加校验 62
2.4.2 实现标签的处理 64
2.4.3 过滤书签 66
2.4.4 创建一个标签列表 69
2.4.5 使用路由管理浏览器的位置 71
2.4.6 我们在第3天学到的 73
2.4.7 对CanJS的创造者Justin
B. Meyer的采访 74
2.5 总结 76
2.5.1 CanJS的强项 76
2.5.2 CanJS的弱项 76
2.5.3 最后的思考 76
第3章 AngularJS 77
3.1 概览 77
3.2 第1天:使用依赖注入 79
3.2.1 你好,AngularJS 80
3.2.2 创建服务 83
3.2.3 换个角度来看我们的书签应用前端 86
3.2.4 使用资源服务 87
3.2.5 为服务写自动化测试 89
3.2.6 我们在第1天学到的 93
3.3 第2天:创建控制器和视图 93
3.3.1 创建控制器和使用视图指令 94
3.3.2 利用数据双向绑定的优势 97
3.3.3 创建书签表单 98
3.3.4 关于作用域的重要注意事项 100
3.3.5 端到端的自动化测试 102
3.3.6 我们在第2天学到的 104
3.4 第3天:创建过滤器和路由 105
3.4.1 为书签添加标签 106
3.4.2 构建一个标签列表 107
3.4.3 通过过滤器操作数据 108
3.4.4 定义路由 112
3.4.5 我们在第3天学到的 114
3.4.6 对AngularJS创建者Mi?ko Hevery的采访 115
3.5 总结 116
3.5.1 AngularJS的强项 116
3.5.2 AngularJS的弱项 117
3.5.3 最后的思考 117
第4章 Ring 118
4.1 Ring简介 118
4.2 第1天:基础组件 120
4.2.1 起步 121
4.2.2 Hello, World! 121
4.2.3 用Korma处理数据 124
4.2.4 用Hiccup把数据转化为HTML 130
4.2.5 使用Compojure处理路由 133
4.2.6 我们在第1天学到的 136
4.3 第2天:拼接的模式 137
4.3.1 定义API 137
4.3.2 处理JSON 138
4.3.3 验证输入 140
4.3.4 可组合的路由 143
4.3.5 我们在第2天学到的 146
4.4 第3天:构建应用的其他方法 147
4.4.1 Ring中间件 147
4.4.2 Enlive 149
4.4.3 关于测试 153
4.4.4 我们在第3天学到的 154
4.4.5 对James Reeves的采访 155
4.5 总结 156
4.5.1 Ring的强项 156
4.5.2 Ring的弱项 157
4.5.3 最后的思考 158
第5章 Webmachine 159
5.1 Webmachine简介 159
5.2 第1天:HTTP请求状态机 161
5.2.1 起步 162
5.2.2 Hello, World 162
5.2.3 和资源函数一起工作 165
5.2.4 资源函数 166
5.2.5 请求转发 168
5.2.6 参数化转发 170
5.2.7 我们在第1天学到的 171
5.3 第2天:构建应用 172
5.3.1 短链接 172
5.3.2 使用Mustache模板引擎 179
5.3.3 Petite里的模板 182
5.3.4 处理多种内容类型 184
5.3.5 我们在第2天学到的 186
5.4 第3天:照亮HTTP的阴暗面 186
5.4.1 让资源可缓存 187
5.4.2 授权 193
5.4.3 我们在第3天学到的 196
5.4.4 对Justin Sheehy的采访 197
5.5 总结 198
5.5.1 Webmachine的强项 198
5.5.2 Webmachine的弱项 199
5.5.3 最后的思考 199
第6章 Yesod 200
6.1 Yesod简介 201
6.1.1 组成部分 201
6.1.2 计划 201
6.2 第1天:你不能搞错的数据 202
6.2.1 新手入门 202
6.2.2 Hello, World 203
6.2.3 使用DSL描述数据 205
6.2.4 使用模型 207
6.2.5 改变和删除模型 210
6.2.6 我们在第1天学到的 211
6.3 第2天:视图、表单和认证 212
6.3.1 Ye Olde的模板语言 213
6.3.2 功能性表单 216
6.3.3 认证和授权 219
6.3.4 我们在第2天学到的 223
6.4 第3天:继续Rumble 224
6.4.1 创建头版 225
6.4.2 创建一个发布新闻表单 228
6.4.3 查看新闻与提交评论 230
6.4.4 我们在第3天学到的 233
6.4.5 对Michael Snoyman的采访 234
6.5 总结 237
6.5.1 Yesod的强项 237
6.5.2 Yesod的弱项 238
6.5.3 最后的思考 238
第7章 Immutant 239
7.1 Immutant简介 239
7.1.1 Immutant的特性 240
7.1.2 计划 240
7.2 第1天:不仅仅是网络基础 241
7.2.1 开始 241
7.2.2 你好,世界 242
7.2.3 分布式缓存 244
7.2.4 计划任务 249
7.2.5 我们在第1天学到的 250
7.3 第2天:构建数据管道 251
7.3.1 消息队列 251
7.3.2 管道 255
7.3.3 Overwatch的管道 257
7.3.4 我们在第2天学到的 262
7.4 第3天:多语言应用 263
7.4.1 叠加 263
7.4.2 集群 268
7.4.3 我们在第3天学到的 272
7.4.4 对Jim Crossley的采访 273
7.5 总结 275
7.5.1 Immutant的强项 275
7.5.2 Immutant的弱项 275
7.5.3 最后的思考 276
第8章 结束 277
8.1 关键想法 277
8.1.1 简单性 278
8.1.2 代码运行在何处 278
8.1.3 组合 279
8.1.4 声明式优先于指令式 279
8.1.5 动态类型和静态类型 280
8.1.6 状态机 280
8.1.7 交互性 281
8.2 快乐的探索吧 281
前言/序言
七周七Web开发框架 下载 mobi epub pdf txt 电子书 格式