Node与Express开发
上QQ阅读APP看书,第一时间看更新

前言

读者对象

很明显,本书是给想要用JavaScript、Node和Express创建Web应用程序(传统网站、REST API,或者介于两者之间的任何东西)的程序员准备的。Node开发令人兴奋的一面是它已经吸引了全新的程序员受众。JavaScript的可用性和灵活性吸引了来自世界各地的自学成才的程序员。在计算机科学的历史中,编程还从没有如此容易过。学习编程的在线资源的品质和数量(以及遇到困难时获取的帮助)真的令人惊讶和鼓舞人心。所以对于那些新(可能是自学)的程序员,我表示欢迎。

当然,还有像我这样已经做过一段时间编程的程序员。与同时代的很多程序员一样,我也是从汇编和BASIC开始的,然后经历了Pascal、C++、Perl、Java、PHP、Ruby、C、C#和JavaScript。上大学时,我接触过更加小众的语言,比如ML、LISP和PROLOG。这些语言很多都接近我的理想选择,但没有一个像JavaScript这样让我觉得前景如此光明。所以这本书也是给像我这样的程序员写的,他们经验丰富,可能对特定技术的认识更富哲理。

你不一定要有Node方面的经验,但应该有一些JavaScript经验。如果你刚接触编程,建议你到Codecademy(http://www.codecademy.com/tracks/javascript)上看看。如果你是有经验的程序员,推荐你看看Douglas Crockford的JavaScript: The Good Parts(O'Reilly, http://book.douban.com/subject/2994925/)。本书中的例子可以在Node支持的任何系统(包括Windows、OS X和Linux)上使用。这些示例主要面向命令行(终端)用户,所以你应该熟悉你所使用的系统的终端。

最重要的是,本书是为那些跃跃欲试的程序员准备的。他们对互联网的未来感到兴奋,并且想参与其中。他们对学新东西、新技术和Web开发的新方式感到兴奋。亲爱的读者,如果你没有兴奋感,我希望你读完本书时能有这种感觉……

内容安排

第1章和第2章将会介绍Node和Express,以及你在整本书中都会用到的一些工具。在第3章和第4章中,你将开始用Express搭建一个示例网站的骨架,这个网站也是贯穿本书始终的例子。

第5章讨论测试和QA。第6章介绍Node中一些更重要的结构,以及Express如何扩展和使用它们。第7章讲解模板(用Handlebars),为使用Express搭建有用的网站打下基础。第8章和第9章介绍cookies、会话和表单处理器,这些是用Express搭建基本可用的网站需要了解的基础知识。

第10章深入探讨中间件,这是Connect(Express的主要组件之一)的核心概念。第11章解释如何用中间件从服务器发送电子邮件,并讨论邮件的安全和布局问题。

第12章提供产品问题的预览。即便到这一阶段,你也没有掌握搭建产品环境中的网站所需的全部信息,但现在就考虑产品环境可以让你在将来免受巨大的痛苦。

第13章讨论持久化,内容主要围绕MongoDB(一种领先的文档数据库)展开。

第14章介绍Express中路由的细节(URL如何映射到内容)。第15章深入探讨如何用Express编写API。第16章介绍提供静态内容的细节,并重点介绍性能最大化。第17章重申流行的模型-视图-控制器(MVC)范式,以及它如何融入Express。

第18章讨论安全:如何在程序中搭建认证和授权(重点介绍如何使用第三方认证),以及如何通过HTTPS运行网站。

第19章解释如何集成第三方服务。所用的例子是Twitter、谷歌地图和Weather Underground。

第20章和第21章让你准备好迎接重要的日子:网站的正式启用。内容包括调试(以便你能在启用网站前找出所有的缺陷)以及启用网站的流程。第22章谈及下一个重要(但经常被忽略)的阶段:维护。

第23章是本书的结尾,指出若想继续深入学习Node和Express可参考哪些其他资源,以及到哪里去寻求帮助。

示例网站

从第3章开始,会有一个贯穿全书的例子:草地鹨旅行社网站。我刚从里斯本旅行回来,对旅行还念念不忘,所以我选的示例网站是虚构的我家乡俄勒冈州一家旅行社(西部草地鹨是俄勒冈州的州鸟)。草地鹨旅行社允许旅行者跟本地的“业余导游”联系,它还跟其他公司合作提供自行车和摩托车租赁及本地游服务。此外,它还维护一个当地景点的数据库,配有历史和位置感知服务。

跟所有教学示例一样,草地鹨旅行社网站是瞎编的,但这个例子涉及很多在现实世界中也会遇到的挑战:第三方组件集成、地理位置服务、电子商务、性能和安全。

因为本书的重点是后端基础设施,所以示例网站不是完整的,它仅仅作为一个假想示例提供例子的深度和上下文。如果你在搭建自己的网站,可以用草地鹨旅行社作为模板。

排版约定

本书使用了下述排版约定。

· 楷体

标示新术语。

· 等宽字体

表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。

· 加粗等宽字体

表示应该由用户直接输入的命令或其他文本。

该图标表示提示或建议。

该图标表示普通的注记。

该图标表示警告或警示。

使用代码示例

补充材料(代码示例、练习等)可以从https://github.com/EthanRBrown/web-development-with-node-and-express下载。

本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可,销售或分发O'Reilly图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。

我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和ISBN。比如:“Web Development with Node and Express by Ethan Brown (O'Reilly). Copyright 2014 Ethan Brown, 978-1-491-94930-6.”

如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过permissions@oreilly.com与我们联系。

Safari®Books Online

Safari Books Online(http://www.safaribooksonline.com)是应运而生的数字图书馆。它同时以图书和视频的形式出版世界顶级技术和商务作家的专业作品。技术专家、软件开发人员、Web设计师、商务人士和创意专家等,在开展调研、解决问题、学习和认证培训时,都将Safari Books Online视作获取资料的首选渠道。

对于组织团体、政府机构和个人,Safari Books Online提供各种产品组合和灵活的定价策略。用户可通过一个功能完备的数据库检索系统访问O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology以及其他几十家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解Safari Books Online的更多信息,我们网上见。

联系我们

请把对本书的意见和疑问发送给出版社。

美国:

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

中国:

北京市西城区西直门南大街2号成铭大厦C座807室(100035)

奥莱利技术咨询(北京)有限公司

O'Reilly的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书的网站地址是:

http://bit.ly/web_dev_node_express

对于本书的评论和技术性问题,请发送电子邮件到:

bookquestions@oreilly.com

要了解更多O'Reilly图书、培训课程、会议和新闻的信息,请访问以下网站:

http://www.oreilly.com

我们在Facebook的地址如下:

http://facebook.com/oreilly

请关注我们的Twitter动态:

http://twitter.com/oreillymedia

我们的YouTube视频地址如下:

http://www.youtube.com/oreillymedia

致谢

我生命中的很多人都为本书的出版做出了贡献。如果没有那些触及我的生命并影响我的人,我就不可能完成本书。

我想首先感谢Pop Art的每一位。我在Pop Art的时光不仅重燃了我对工程的热情,还让我从每个人身上学到了很多。如果没有他们的支持,本书将无法完成。感谢Steve Rosenbaum创造了这样一个振奋人心的工作场所。感谢Del Olds将我带到Pop Art,让我感受到大家的热情,并荣幸地成为一个领导者。感谢Paul Inman的无私支持以及对工程的热忱。感谢Tony Alferez的热情支持,并帮我抽出时间写作,让我没有影响Pop Art的工作。最后感谢我共事过的所有优秀工程师,让我专注于我的事业,他们是John Skelton、Dylan Hallstrom、Greg Yung、Quinn Michael和CJ Stritzel。

Zach Mason,感谢你的激励。这本书可能不是你的The Lost Books of the Odyssey,但它是我的。我不知道如果没有你这个例子,我还能不能如此大胆。

我的一切都归功于我的家庭。我无法想象还有比我父母给我的更好的、充满爱的教育,我妹妹身上也体现了他们良好的教育。

非常感谢Simon St. Laurent给我这次机会。感谢Brian Anderson进行了平稳又出色的编辑。感谢O'Reilly的每一位,他们既专注又热情。感谢Jennifer Pierce、Mike Wilson、Ray Villalobos和Eric Elliot,他们进行了彻底且富有建设性的技术审查。

Katy Roberts和Hanna Nelson对我“冒昧”的提案提供了宝贵的反馈和建议,使本书成为可能。非常感谢你们两位!感谢Chris Cowell-Shah对“质量保证”一章的精彩反馈。

最后,感谢我亲爱的朋友们,没有你们我肯定已经疯了。Byron Clayton、Mark Booth、Katy Roberts和Sarah Lewis,我不可能有比你们再好的朋友了。还要感谢Vickey和Judy。我爱你们。