具体描述
本书带领读者认识和学习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进行日常开发。
目录信息
1.1 简单的领域特定语言2
1.2 第1天:构建一个书签应用2
1.2.1 你好,Sinatra3
1.2.2 用RSpec来测试4
1.2.3 REST风格的API6
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章 CanJS37
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 使用datao方法从页面获取数据模型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章 AngularJS77
3.1 概览77
3.2 第1天:使用依赖注入79
3.2.1 你好,AngularJS80
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章 Ring118
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把数据转化为HTML130
4.2.5 使用Compojure处理路由133
4.2.6 我们在第1天学到的136
4.3 第2天:拼接的模式137
4.3.1 定义API137
4.3.2 处理JSON138
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 Enlive149
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章 Webmachine159
5.1 Webmachine简介159
5.2 第1天:HTTP请求状态机161
5.2.1 起步162
5.2.2 Hello,World162
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章 Yesod200
6.1 Yesod简介201
6.1.1 组成部分201
6.1.2 计划201
6.2 第1天:你不能搞错的数据202
6.2.1 新手入门202
6.2.2 Hello,World203
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天:继续Rumble224
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开发框架的剖析都非常深入,不仅讲解了基本用法,还深入探讨了其背后的设计模式和架构原理。我特别喜欢作者在分析一个框架的优缺点时,会结合大量的实际案例,用数据和事实说话,而不是空泛的理论。这种严谨的论证方式,让我能够更客观地认识每个框架的适用场景和局限性。书中还涉及了一些与Web开发相关的“软技能”的讨论,比如团队协作、版本控制等,这些内容在很多技术书籍中都可能被忽略,但对于一个完整的开发者来说,却是必不可少的。让我觉得这本书不仅仅是一本技术手册,更是一本关于如何成为一名优秀Web开发者的指南。
这本书最让我印象深刻的,是它所传递的一种“学以致用”的学习方法论。作者在介绍每一个Web开发框架时,并不是孤立地讲解其功能,而是将它置于一个实际的项目场景中去阐述。比如,在介绍某个前端框架时,作者会引导读者思考如何构建一个响应式的用户界面,如何处理用户输入,以及如何与后端进行数据交互。这种“情境化”的学习方式,极大地增强了我对知识的理解和记忆。我感觉自己不是在被动地接收信息,而是在主动地参与到Web开发的实践过程中。书中还强调了“迭代式开发”的重要性,鼓励读者从小处着手,逐步完善,这种理念对于我这种有拖延症的读者来说,简直是“救星”。另外,作者还分享了一些关于“代码风格”和“项目组织”的建议,这些细节虽然看似微不足道,但在实际开发中却能极大地提升代码的可读性和可维护性,让我受益匪浅。
读这本书的体验,就像是在一个经验丰富的向导的带领下,探索一片广袤而神秘的Web开发大陆。作者的写作风格非常平易近人,没有那种高高在上的技术说教,而是带着一种分享和引导的姿态。在介绍第一个框架时,作者并没有直接抛出大量的代码,而是从这个框架的核心思想和解决的痛点出发,让我理解了为什么这个框架会应运而生,以及它在Web开发领域扮演的角色。然后,逐步引入具体的概念和语法,并通过一些精心设计的示例,帮助读者一步步构建起对这个框架的认知。我尤其赞赏作者在代码示例上的用心,每一个例子都足够精炼,能够清晰地展示某个知识点,同时又具备一定的完整性,能够让读者在本地运行并观察效果。书中穿插的一些“最佳实践”和“常见陷阱”的提示,更是像及时雨,帮助我规避了一些可能走入的弯路。虽然书中涵盖了多个框架,但我感觉作者并没有追求“大而全”,而是力求“精而深”,每个框架的介绍都力求到位,让读者能够真正掌握其精髓,而不是浅尝辄止。
我之所以对这本书爱不释手,很大程度上是因为它提供了一种非常“务实”的学习路径。作者在讲解每一个Web开发框架时,都会特别关注它的“上手难度”和“实际应用价值”。他会用一些非常直观的例子,来展示如何快速地用这个框架搭建一个简单的应用,让我能够立刻感受到学习的成就感。同时,书中还提供了一些“进阶”的技巧和“性能优化”的建议,让我在掌握了基本功之后,能够进一步提升自己的技术水平。我感觉作者非常了解读者的需求,他知道我们渴望快速掌握一门技术,也渴望了解如何将这项技术用到实际的项目中去。书中关于“调试技巧”和“故障排查”的内容,更是让我感到非常实用,因为在开发过程中,遇到问题是在所难免的,而掌握有效的解决问题的方法,将极大地提高我的开发效率。
这本书的封面设计很有意思,简洁的配色加上抽象的图标,让我对“七周七Web开发框架”这个书名产生了好奇。翻开第一页,作者并没有立刻进入技术细节,而是先描绘了Web开发的宏大图景,从前端的交互体验到后端的逻辑处理,再到数据库的存储和API的调用,像一条清晰的脉络,让我对整个Web开发生态有了更直观的认识。接着,书中并没有急于介绍具体的框架,而是花了相当的篇幅去讲解“框架”本身存在的意义和价值。作者用生动的比喻,比如将框架比作“开发者的脚手架”,形象地说明了框架如何帮助开发者在纷繁复杂的技术洪流中找到方向,提高效率,避免重复造轮子。我尤其喜欢作者在这一部分提到的“约定优于配置”的理念,这对于新手来说,无疑是一剂定心丸,让我觉得学习框架并不是要死记硬背大量的规则,而是理解其背后的设计哲学。后续的内容,虽然我还没有深入阅读,但仅仅是目录的浏览,就让我看到了作者在选择框架时的独到眼光,似乎涵盖了当前主流且有代表性的技术栈,这对于我这样想一次性掌握多门主流框架的读者来说,简直是福音。
也许作者是想写给那些从事数年后端开发的资深工程师。他们有一定的开发经验和充足的时间,通晓工作中现有的开发框架的同时闲来无事想“长长见识”。如果你满足以上的条件那么恭喜你就是作者的读者群。
是也乎 ╮(╯▽╰)╭ 七周七X 原创团队嗯哼… 但是 JAVA 味雄厚… 深切的体会到 JAVA 的宏大遗产…Clojure 在平滑的接收 ing.... 当然…Haskell/Eerlang 等前沿激进语言也都各有奇招在死扒着时代狂飙中的列车… Lua/Factor 等等小语言…好象得等 七周七Web框架2 才知有咩可关注的了………
是也乎 ╮(╯▽╰)╭ 七周七X 原创团队嗯哼… 但是 JAVA 味雄厚… 深切的体会到 JAVA 的宏大遗产…Clojure 在平滑的接收 ing.... 当然…Haskell/Eerlang 等前沿激进语言也都各有奇招在死扒着时代狂飙中的列车… Lua/Factor 等等小语言…好象得等 七周七Web框架2 才知有咩可关注的了………
是也乎 ╮(╯▽╰)╭ 七周七X 原创团队嗯哼… 但是 JAVA 味雄厚… 深切的体会到 JAVA 的宏大遗产…Clojure 在平滑的接收 ing.... 当然…Haskell/Eerlang 等前沿激进语言也都各有奇招在死扒着时代狂飙中的列车… Lua/Factor 等等小语言…好象得等 七周七Web框架2 才知有咩可关注的了………
适合有较多web开发经验的人,用过五六个web框架再来看会好很多