零、前言

谢谢你买了这本书。您在前端和 JavaScript 技术方面迈出了新的一步,这是一个很好的选择。Meteor 框架不仅仅是另一个旨在让事情变得更简单的库。它是一个针对 web 服务器、客户端逻辑和模板的完整解决方案。此外,它包含一个完整的构建过程,这将使 Web 块的工作速度更快。感谢 Meteor,链接你的脚本和样式是过去的事情,因为自动构建过程照顾你的一切。当然,这是一个很大的改变,但你很快就会爱上它,因为它使扩展应用的速度与创建新文件一样快。

Meteor 的目标是创建默认为实时的单页面应用。它负责 DOM 的数据同步和更新。如果数据改变,您的屏幕将被更新。这两个基本概念构成了我们作为网页开发者所做的许多工作,而对于 Meteor 来说,这并不需要额外的代码行。

在我看来,Meteor 完全改变了现代网页开发的游戏规则。它引入了以下默认模式:

  • 胖客户机:所有的逻辑都驻留在客户机上。HTML 只在初始页面加载时发送
  • 在客户端和服务器端都使用 JavaScript 和相同的 API
  • 实时:数据自动同步到所有客户端
  • “数据库无处不在”的方法,允许在客户端进行数据库查询
  • 默认的 web 服务器通信的发布/订阅模式

一旦你使用这些新概念,很难回到旧的做事方式,这么多时间只进入准备应用的结构,链接文件或包装成 Require.js 模块,写端点,来回写代码请求和发送数据。

在阅读这本书的时候,你将逐步了解这些概念以及它们是如何联系在一起的。我们将建立一个博客,与后端编辑文章。一个博客就是一个很好的例子,因为它使用了文章列表,每个文章的不同路线,以及一个管理界面来添加新的文章,提供了我们需要完全了解 Meteor。

这本书的内容

第一章,与 Meteor开始,描述了必要的步骤来安装和运行 Meteor,同时进入细节一颗 Meteor 项目的文件夹结构,特别是,Meteor 项目我们将构建。

第二章构建 HTML 模板,展示了如何使用语法等把手构建反应模板,以及如何在其中显示数据。

第 3 章存储数据和处理集合,介绍了服务器端和客户端数据库的使用情况。

第四章控制数据流介绍了 Meteor 的发布/订阅模式,用于服务器和客户端之间的数据同步。

第 5 章Making Our App Versatile with Routing,教我们如何设置路由,让我们的应用表现得像一个真正的网站。

第 6 章保持状态与会话,讨论响应会话对象和如何使用它。

第 7 章用户和权限描述了用户的创建和登录过程。现在,我们将创建博客的后端部分。

第八章安全与允许和拒绝规则,涵盖了如何数据流可以被限制到某些用户,以防止每个人对我们的数据库进行更改。

第 9 章高级反应式,展示了我们如何构建自己的自定义反应式对象,该对象可以基于时间间隔重新运行函数。

第 10 章部署我们的应用,介绍如何使用 Meteor 自己的部署服务,也在您自己的基础设施上部署应用。

第 11 章build Our Own Package介绍了如何编写一个包,并在 Atmosphere 上进行宣传,供大家使用。

第 12 章测试 Meteor,展示了如何使用 Meteor 自己的 tinytest 包测试包,以及使用第三方工具测试 Meteor 应用本身。

附录,包含 Meteor 命令列表,以及铁:路由钩子和它们的描述。

你写这本书需要什么

要遵循本章中的示例,您将需要一个文本编辑器来编写代码。我强烈推荐使用 Sublime Text 作为你的 IDE,因为它有各种各样的插件,几乎适用于 web 开发人员能想到的每一个任务。

您还需要一个现代化的浏览器来查看结果。由于许多示例使用浏览器控制台更改数据库并查看代码片段的结果,我推荐谷歌 Chrome。它的开发工具 web 检查器有一个 web 开发人员需要的一切工作和调试网站轻松。

此外,您可以使用 Git 和 GitHub 来存储您的每一步的成功,以便回到您的代码的以前的版本。

每一章节的代码示例也可以在 GitHub 上https://github.com/frozeman/book-building-single-page-web-apps-with-meteor,其中每个提交在本库与书的一章,给你一个简单的方法来证明每一步的添加和删除。

这本书是给谁的

这本书是为那些想要进入单页面实时应用新范式的 web 开发人员准备的。您不需要是 JavaScript 专业人士就可以阅读本书,但一定要有良好的基本理解,这将使本书成为有价值的伴侣。

如果你听说过 Meteor,但还没有使用过,这本书绝对适合你。它将教你所有你需要理解和使用 Meteor 成功。如果您以前使用过 Meteor,但想要获得更深入的了解,那么最后一章将帮助您提高对自定义响应对象和编写包的理解。测试可能是目前在 Meteor 社区中涉及最少的话题,所以通过阅读最后一章,你将很容易理解如何使用自动化测试使应用健壮。

会话

在这本书中,你会发现许多文本的风格,以区分不同类型的信息。下面是这些风格的一些例子,以及对它们含义的解释。

文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 url、用户输入和 Twitter 句柄如下所示:“使用 Meteor,我们永远不必用 HTML 中的<script>标签链接文件。”

代码块的设置如下:

<head>
  <title>My Meteor Blog</title>
</head>
<body>
  Hello World
</body>

当我们希望您注意代码块的特定部分时,相关的行或项以粗体显示:

<div class="footer">
  <time datetime="{{formatTime timeCreated "iso"}}">Posted {{formatTime timeCreated "fromNow"}} by {{author}}</time>
</div>

命令行输入或输出如下所示:

$ cd my/developer/folder
$ meteor create my-meteor-blog

新词语重要词语以粗体显示。你在屏幕上看到的文字,例如在菜单或对话框中,会出现这样的文本:“然而,现在当我们进入浏览器时,我们仍然会看到Hello World。”

注释

警告或重要注释出现在这样的框中。

提示

提示和技巧是这样的。

读者反馈

我们欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢的东西。读者反馈对于我们开发游戏非常重要。

要给我们发送一般的反馈,只需发送电子邮件到<[feedback@packtpub.com](mailto:feedback@packtpub.com)>,并通过你的信息的主题提到书名。

如果您有需要的书,希望我们出版,请在www.packtpub.com上的SUGGEST a TITLE表格中注明,或发送电子邮件<[suggest@packtpub.com](mailto:suggest@packtpub.com)>

如果你对某一主题有专长,并且你对写书或投稿感兴趣,请参阅我们的作者指南www.packtpub.com/authors

客户支持

现在,您是包书的骄傲所有者,我们有一些东西来帮助您从您的购买中获得最多。

下载示例代码

您可以从您的账户http://www.packtpub.com下载您购买的所有 pack 书籍的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,直接将文件通过电子邮件发送给您。

勘误表

尽管我们已经尽一切努力确保内容的准确性,但错误还是会发生。如果您在我们的任何一本书中发现了错误——也许是文本或代码中的错误——如果您能向我们报告,我们将非常感激。通过这样做,您可以避免其他读者感到沮丧,并帮助我们改进本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书,点击勘误表链接,并输入勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将被上传到我们的网站,或添加到该标题勘误表部分的任何现有勘误表列表中。

要查看之前提交的勘误表,请到https://www.packtpub.com/books/content/support,并在搜索栏中输入书名。所需信息将出现在勘误表部分下。

盗版

互联网上的版权材料盗版是所有媒体都存在的问题。在 Packt,我们非常重视版权和许可的保护。如果您在互联网上发现任何形式的我们作品的非法拷贝,请立即提供我们的位置地址或网站名称,以便我们采取补救措施。

请在<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,并提供疑似盗版资料的链接。

我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值的内容的能力。

问题

如果你对这本书的任何方面有问题,你可以通过<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们会尽力解决这个问题。