具体描述
本书秉承“实战”系列图书的一贯风格,以解决开发者实际问题为出发点,通过Meteor平台构建可扩展的高性能应用。全书共分为三部分、12章,详细介绍了如何用Meteor进行全栈开发,涵盖了Meteor栈的所有关键部分,涉及构成Meteor栈的各种组件和概念、响应式应用的基本模块和应用的构建与合理部署等。作者对MongoDB、路由、包等进行了深入探讨,通过诸多实际案例,让读者全面掌握如何充分发挥Meteor在服务器端和可扩展性上的优势。
作者简介
作者简介:
Stephan Hochhaus
资深Web开发人员,在可扩展的Web解决方案方面具有丰富的经验。精通JavaScript、PHP、C#和Java。
Manuel Schoebel
资深Web开发人员,其技术博客广受开发者欢迎。
两人均是从Meteor诞生之初就一直在工作上运用Meteor。
译者简介:
杨学辉
自由程序员,译者,独立博客——猎数博客——的博主。数学系毕业的技术爱好者,兴趣广泛,致力于学习和开发新的技术,以便高效解决现实生活中的实际问题。深入的了解和交流,可以访问他的博客:http://www.bagualu.net。
目录信息
第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
· · · · · · (收起)
读后感
用户评价
《Meteor实战》这本书,对我来说,是一次对全栈开发领域的一次深入探索。我一直对能够实现前后端一体化开发的框架情有独钟,而Meteor正是这样一个能够极大简化开发流程的优秀选择。然而,对于如何才能真正地掌握它,并且能够将其运用到实际的项目开发中,我始终觉得缺乏一个系统性的指引。 我希望这本书能够填补我在这方面的空白。从最基础的Meteor环境搭建,到核心的响应式数据流、模板引擎的使用,再到数据库的集成和API的设计,我都希望能够有清晰、易懂的讲解。我期待书中能够提供大量的代码示例,这些示例不仅要能够说明问题,更要能够体现Meteor的设计哲学。 “实战”二字,意味着这本书不仅仅是理论的堆砌,更需要有实际的项目案例作为支撑。我希望能够看到书中通过一些典型的项目,例如一个简单的博客系统,或者一个实时的聊天应用,来演示如何将Meteor的各种特性有机地结合起来,构建一个完整、可用的Web应用。在这些案例中,我希望能够学到如何处理用户认证、数据校验、错误处理等实际开发中常见的挑战。 我也非常期待书中能够探讨Meteor在性能优化、安全防护、以及部署和维护方面的最佳实践。这些都是决定一个应用能否成功走向生产环境的关键因素。 我希望通过阅读《Meteor实战》,我能够对Meteor有一个全面而深入的理解,并且能够自信地运用它来开发各种类型的Web应用。这本书对我而言,不仅仅是一本技术手册,更是一次能力的提升。
拿到《Meteor实战》这本书,我第一反应就是它应该能帮我解决很多前端开发中遇到的痛点。尤其是对于一些需要实时更新、高交互性的应用,Meteor的响应式特性一直让我非常感兴趣。之前也零散地看过一些Meteor的介绍,但总感觉缺乏一个系统性的学习入口,很多东西都只是一知半解。 我非常期待这本书能够像它的名字一样,提供非常扎实的“实战”指导。这意味着它不能仅仅停留在理论的讲解,而是要包含大量贴近实际开发的示例代码和项目案例。我希望能够通过这些案例,学习到如何一步步地构建一个完整的Meteor应用,从前端的UI设计到后端的逻辑处理,再到数据库的管理,都能有详细的演示。 具体来说,我希望书中能够深入讲解Meteor的核心概念,比如它的数据流管理、订阅发布机制、以及如何利用它的响应式特性来构建动态的Web界面。同时,我也非常关心书中是否会涉及一些进阶的主题,比如如何进行性能优化,如何处理复杂的用户认证和权限控制,以及如何进行应用的部署和维护。 我对这本书的要求是,它能够让我从一个对Meteor一知半解的学习者,成长为一个能够独立开发Meteor应用的实践者。我希望它能够成为我在学习和开发过程中不可或缺的参考资料,在我遇到问题时,能够提供清晰的解决方案。 这本书能否真正做到“实战”,将决定它在我心中的地位。如果它能提供切实可行的指导,让我能够快速上手并高效地开发,那我一定会给它高度评价。
当我拿到《Meteor实战》这本书的时候,说实话,我并没有立刻抱着“这将是改变我编程生涯的圣经”这样的期望。我的态度通常是比较务实的,对于任何技术书籍,我更看重它的落地性和实用性。Meteor这个框架,我之前有所耳闻,知道它以其全栈的特性和实时更新的能力而闻名,但一直没有找到一个足够好的切入点去深入学习。 所以,这本书对我来说,更像是一个“叩门砖”。我希望它能够帮我打开Meteor的世界,让我不再只是停留在概念层面,而是能够真正地“玩转”它。我期待这本书能够提供一条清晰的学习路径,从最基础的“Hello World”开始,逐步引导我理解Meteor的核心思想——它的响应式数据流,它的服务器端渲染,它的轻松部署。 在阅读过程中,我最关注的将是那些能够直接指导我进行编码的部分。是不是有足够多的、贴近实际需求的示例代码?这些代码是不是易于理解和修改?书中会不会讲解一些常见的开发模式,比如如何组织项目结构,如何编写可复用的组件,如何进行单元测试和集成测试?这些都是我在实际项目中非常看重的东西。 另外,对于Meteor的部署和维护,我也希望能有详细的介绍。毕竟,一个应用开发出来只是第一步,如何让它稳定地运行在生产环境中,并且能够方便地进行更新和扩展,是同样重要的。这本书有没有这方面的指导,也是我衡量其价值的一个重要标准。 我不会期待它能解答我所有的疑问,毕竟技术日新 KD,但如果它能为我建立起一个坚实的基础,让我能够举一反三,独立解决后续的问题,那它就已经是非常成功的一本书了。
《Meteor实战》这本书,从书名就能感受到一种蓬勃的生命力,仿佛是即将划破夜空的流星,带来光明与希望,也预示着一次激动人心的旅程。我一直对前端技术抱有浓厚的兴趣,特别是那些能够快速构建功能强大、实时交互应用的框架。Meteor在我看来,就是这样一个极具潜力的选择。这本书的出现,无疑为我提供了深入了解和掌握Meteor的绝佳机会。我期待它能够带领我一步步揭开Meteor的面纱,从基础概念到核心机制,再到实际的项目开发,都能有详实而生动的讲解。 在阅读之前,我脑海中勾勒出的画面是:清晰的架构图,解释Meteor如何将前后端无缝连接;详细的代码示例,展示如何利用Meteor的响应式特性构建实时更新的界面;以及实际项目案例,带领我从零开始搭建一个完整的应用,让我能够真切地感受到Meteor的威力。我希望这本书不仅仅是理论的堆砌,更能提供切实可行的解决方案,解决我在实际开发中可能遇到的各种问题。比如,如何高效地管理数据,如何处理用户认证和权限控制,如何进行性能优化等等。 这本书的篇幅,我也很关注,希望能有足够的内容来支撑起“实战”二字。不仅仅是简单的API罗列,更重要的是对这些API的使用场景、最佳实践以及可能遇到的坑的深入剖析。我尤其期待书中能够涵盖一些高级特性,例如Meteor的订阅模式、数据发布与订阅机制的精髓,以及如何利用Meteor的生态系统中的各种包来扩展应用功能。 读完之后,我希望能对Meteor形成一个系统而完整的认知,能够自信地使用Meteor来开发各种类型的Web应用。我希望这本书能够成为我案头的必备参考,在我遇到问题时,能够迅速找到答案;在我缺乏灵感时,能够提供新的思路。
《Meteor实战》这本书,从封面传递出一种简洁而有力的信息,让我在众多技术书籍中一眼就注意到它。我对Meteor的了解,更多的是停留在它能够提供前后端统一开发体验的层面,以及它在实时数据同步方面的强大能力。但究竟如何才能真正发挥出它的潜力,构建出高性能、可维护的应用,我一直觉得缺乏一个系统性的指导。 我希望这本书能够填补我在这方面的知识空白。我渴望看到它能够深入浅出地讲解Meteor的各个核心模块,例如它是如何处理数据流的,它的模板引擎(Blaze, React, Vue)的选择与应用,以及如何利用它的数据库(MongoDB)进行高效的数据管理。我尤其期待书中能够提供一些关于如何构建复杂应用的架构设计思路,而不是仅仅停留在单个功能的实现上。 更重要的是,“实战”二字,让我对书中的内容充满了期待。我希望能够看到大量的、真实的项目案例。这些案例应该覆盖从简单的待办事项列表到更复杂的社交平台或电商应用。通过这些案例,我希望能学习到如何将Meteor的各种特性融会贯通,如何处理实际开发中会遇到的各种挑战,比如用户认证、权限控制、文件上传、API集成等。 我也会关注书中是否讲解了Meteor的生态系统,比如常用的第三方包、插件以及如何集成其他技术栈。一个框架的生命力,往往体现在其能否方便地与其他技术进行协同工作。 这本书对我而言,不仅仅是学习Meteor的工具,更是一种思维方式的引导。我希望通过它,能够培养出一种“Meteor式”的开发思维,理解其响应式的理念,并将其应用到实际工作中,从而提升我的开发效率和应用质量。
《Meteor实战》这本书,我是在一个偶然的机会下接触到的。当时我正在寻找能够快速搭建原型应用的解决方案,而Meteor的轻量级和全栈特性吸引了我。但坦白说,我对Meteor的了解还停留在非常初级的阶段,对于它到底能做什么,以及如何才能高效地使用它,心中一直存疑。 这本书的出现,恰好满足了我对深入了解Meteor的渴望。我希望它能够从最基础的概念入手,循序渐进地讲解Meteor的核心组件和工作原理。从它的响应式数据流,到它的模板引擎,再到它的数据库集成,我都希望能有清晰而透彻的阐述。 我更看重的是书中“实战”的部分。我希望看到一些完整的项目案例,能够覆盖从需求分析到最终部署的整个开发流程。通过这些案例,我希望能学习到如何在实际项目中运用Meteor的各种特性,如何处理常见的开发难题,比如如何进行用户管理,如何实现数据校验,以及如何进行性能优化。 我也会关注书中是否讲解了Meteor的生态系统,比如如何使用第三方的库和插件来扩展应用的功能。一个框架的生命力,很大程度上取决于它的生态系统的丰富程度。 我希望读完这本书,我能够真正掌握Meteor这门技术,并且能够自信地将其应用到我的实际项目中。这本书对我来说,不仅仅是一本技术手册,更是一种能力的提升。
当我第一次看到《Meteor实战》这本书的时候,就对它产生了浓厚的兴趣。Meteor作为一款能够实现全栈开发的框架,其高效和便捷的特性一直吸引着我。然而,我之前对Meteor的了解更多的是停留在概念层面,缺乏实际操作的经验,因此,我一直希望能有一本能够真正指导我进行实战的书籍。 这本书的出现,恰好满足了我的需求。我期待它能够从最基础的Meteor概念讲起,例如它的响应式数据流,它的模板引擎,以及它的数据库集成。我希望书中能够提供清晰的代码示例,并且这些示例能够覆盖实际开发中遇到的各种场景。 更重要的是,我希望这本书能够带领我完成一个完整的Meteor项目,从零开始搭建,到功能的实现,再到最终的部署。通过这个项目,我希望能学习到如何在实际开发中运用Meteor的各种特性,如何处理常见的技术难题,比如用户认证、数据校验、文件上传等等。 我也会关注书中是否会介绍Meteor的生态系统,比如如何使用第三方库来扩展应用的功能。一个强大的生态系统,对于一个框架的长期发展至关重要。 我希望读完这本书,我能够对Meteor有一个全面而深入的理解,并且能够自信地运用它来开发各种类型的Web应用。这本书对我来说,不仅仅是一本技术书,更是一种能力的提升。
《Meteor实战》这本书,对我来说,就像是一张通往未知领域的地图。我一直对全栈开发抱有极大的热情,而Meteor以其独特的全栈能力,一直是我关注的焦点。然而,要真正掌握一门技术,光靠零散的文档和教程是远远不够的,我需要的是一本能够系统、深入地讲解,并且能够指导我进行实际操作的书籍。 我希望这本书能够从最基础的Meteor概念开始,逐步引导我理解它的核心设计理念。从响应式数据流到前后端代码的无缝集成,我期待能够看到清晰的解释和生动的比喻,让我能够轻松地理解这些复杂的机制。 “实战”二字,对我来说尤为重要。我希望书中能够提供大量贴近真实开发场景的项目案例,通过这些案例,我希望能学习到如何将Meteor的各种特性融会贯通,如何构建一个功能完善、性能优越的Web应用。我期待能够看到书中讲解如何处理用户认证、数据校验、错误处理、以及如何进行应用的部署和维护。 我也非常关注书中是否会涉及Meteor的生态系统,比如如何利用第三方库和插件来扩展应用的功能。一个强大的生态系统,往往是决定一个框架能否长期发展的关键因素。 我希望读完这本书,我能够对Meteor有一个全面而深刻的认识,并且能够自信地运用它来解决实际开发中的问题。这本书对我而言,不仅仅是一本技术书籍,更是一次宝贵的学习经历。
我对《Meteor实战》的期待,更多的是源于它所承载的“实战”二字。在我看来,技术书籍的价值,很大程度上取决于它能否将抽象的概念转化为可执行的代码,能否帮助读者解决实际开发中遇到的难题。Meteor作为一个全栈框架,其吸引力在于能够简化开发流程,提高开发效率,特别是对于需要实时交互的应用场景,它的优势尤为明显。 我希望这本书能够带领我深入理解Meteor的内在机制。例如,它是如何实现前后端数据的实时同步的?它的响应式数据流是如何工作的?在构建用户界面时,有哪些推荐的设计模式和最佳实践?我期待书中能够提供清晰的架构图和详细的解释,帮助我建立起一个完整的知识体系。 在代码层面,我希望看到丰富且高质量的示例。这些示例不应该仅仅是功能的堆砌,更应该是有目的性的、能够体现Meteor设计理念的。我希望通过这些代码,能够学会如何优雅地处理异步操作,如何有效地管理应用状态,以及如何构建可测试的代码。 此外,对于实际项目开发中会遇到的各种挑战,我也希望书中能够有所提及和解答。比如,如何进行用户认证和授权?如何处理复杂的表单输入和校验?如何实现文件的上传和存储?如何优化应用的性能?这些都是我非常关心的方面。 我希望读完这本书,我能够自信地使用Meteor来构建一个完整的Web应用,并且在遇到问题时,能够迅速找到解决方案。这本书对我来说,不仅仅是学习Meteor的教科书,更是一本解决实际问题的指南。
拿到《Meteor实战》这本书,我的心情是既期待又有些许的审慎。期待是因为Meteor这个框架在我看来,拥有巨大的潜力,尤其是在快速迭代和构建实时应用的场景下。审慎则是因为我曾接触过不少“实战”书籍,但很多最终都沦为了API的罗列,缺乏真正意义上的实践指导。 我希望这本书能够打破这种局面。我期待它能够以一种非常接地气的方式,带领我深入Meteor的世界。从最基本的安装配置,到核心的数据管理、视图渲染,再到用户认证、路由处理等关键环节,都应该有详实而具体的讲解。我希望书中能够提供大量的代码示例,并且这些示例应该能够直接运行,并且具备一定的可扩展性,让我能够在这些基础上进行修改和创新。 更重要的是,我希望它能够教会我“如何思考”。如何在高并发场景下设计合理的数据模型?如何在高可用性方面进行优化?如何将Meteor与其他技术栈进行有效的集成?这些才是真正考验一个开发者能力的问题,而我希望《Meteor实战》能够为我提供一些指导性的思路。 我也关注书中是否会提供一些关于Meteor开发最佳实践的建议,比如如何组织项目结构,如何编写可维护的代码,以及如何进行性能测试和调优。这些细节对于构建健壮的应用至关重要。 如果这本书能够让我跳出“知其然”的阶段,真正达到“知其所以然”,并且能够让我独立地构建出令人满意的Meteor应用,那我一定会认为这是一本非常值得推荐的书籍。