前言

前言

回首1995年春天,那时的浏览器与现在大不一样。万维网面世已有4年(标志是Tim Berners-Lee编写的第一个浏览器),距离Mosaic浏览器的首次发布已有两年,而Internet Explorer 1.0过几个月也要发布了。万维网开始显露出流行的迹象,虽然一些大公司对这一领域也表现出兴趣,但当时真正有所作为的却是一家名为Netscape的小公司。

Netscape当时广受欢迎的浏览器Netscape Navigator正在进行第2版的开发,而此时客户端工程师团队和联合创始人Marc Anderseen决定在Navigator 2.0中嵌入一种编程语言。这一任务分配给了软件工程师Branden Eich,从1995年5月6日至5月15日,他用了10天时间就完成了。这一语言被命名为Mocha ,后来改名为LiveScript,并最终定名为JavaScript。

1995年9月,Netscape Navigator 2.0发布,它改变了大家对浏览器的看法。至1996年8月,Internet Explorer 3.0实现了对JavaScript的支持。同年11月,Netscape宣布他们已经将JavaScript提交到ECMA进行标准化。1997年6月,ECMA-262规范公布,使得JavaScript成为事实上的Web标准编程语言。

多年来,JavaScript被很多人贬低为业余爱好者使用的编程语言。JavaScript的架构、碎片化的实现以及最初的“业余”受众,使得专业程序员都把它忽视了。直到AJAX的出现,以及2005年左右Google发布了Gmail和Google Maps,此时AJAX技术可以将Web网站转换成Web应用的形势才突然明朗起来。这鼓舞着新一代Web开发人员推动JavaScript的开发,使它更上一层楼。

首先是第一代工具库问世了,比如jQuery和Prototype。不久,Google在2008年年底又发布了Google Chrome和它使用的V8 JavaScript引擎。V8的即时编译器极大提升了JavaScript的性能。这开启了JavaScript开发的新纪元。

2009年是JavaScript发生翻天覆地变化的一年:Node.js等平台使开发人员可以在服务器上运行JavaScript;MongoDB等数据库普及并简化了JSON存储;AngularJS等框架开始使用强大的新一代浏览器。JavaScript从面世到无所不在,用了将近20年时间。曾经被“门外汉”用来执行小脚本的编程语言,如今已经成为世界上最流行的编程语言之一。不断丰富的开源协作工具,连同乐于奉献的天才工程师们,创造出了世界上最有价值的社区之一。而这些贡献者们种下的种子,如今正以涌泉般的创造力蓬勃生长。

这一变革的影响是巨大的。过去的开发团队是分立的,每个人都是各自领域的专家,现在全部都使用同一种语言进行更加精益、更加敏捷的软件开发,成为了一个统一的团队。

如今已经有许多的JavaScript全栈开发框架,有些由伟大的团队所开发,有些解决了很重要的问题,但没有一个像MEAN这样开放而又兼具模块化。MEAN的理念很简单,用MongoDB作为数据库,Express作为Web框架,AngularJS作为前端框架,Node.js作为平台,并运用模块化的方法将它们整合在一起,以保证其符合现代软件开发的灵活性。MEAN方法依赖于其各开源模块的社区,这保持了它的更新和稳定,并确保即使某一模块无法使用,也可以用更适合的模块无缝替换。

欢迎你参与到JavaScript的变革中,我保证将尽全力帮助你成为一个JavaScript全栈工程师。

在本书里,我们将帮你配置开发环境,说明怎样用最合适的模块来连接MEAN的各个组件。我们会介绍保持代码简单、清晰以及避免常见问题的最佳实践。我们还会讲解如何创建你的身份验证层,并添加首个实体。你会学到如何在创建服务器端和客户端应用程序之间的实时通信时,利用JavaScript的非阻塞架构。最后,我们还会向你展示如何用适当的测试来测试代码,以及使用哪些工具来使开发过程自动化。

本书主要内容

第1章“MEAN简介”,让你初识MEAN,并学会在不同的操作系统上安装MEAN。

第2章“Node.js入门”,介绍Node.js的基础知识,以及如何用它进行Web应用开发。

第3章“使用Express开发Web应用”,说明如何创建和构造一个遵循MVC模式的Express应用。

第4章“MongoDB入门”,解释MongoDB的基本理论,以及如何用它来存储你的应用程序数据。

第5章“Mongoose入门”,演示如何在Express应用中使用Mongoose来连接MongoDB数据库。

第6章“使用Passport模块管理用户权限”,介绍如何管理用户身份验证和提供多种不同的登录选项。

第7章“AngularJS入门”,阐述如何实现一个与Express应用协同的AngularJS应用。

第8章“创建MEAN的CURD模块”,解释如何编写和使用MEAN应用中的各种实体。

第9章“基于Socket.io的实时通信”,展示如何在客户端与服务器间创建和使用实时通信。

第10章“MEAN应用的测试”,介绍如何针对MEAN应用的不同部分进行自动化测试。

第11章“MEAN应用的调试与自动化”,解释如何让你的MEAN应用更发更加高效。

阅读本书的前提

本书适合对HTML、CSS和现代JavaScript开发有一定了解的初级和中级Web开发人员。

本书读者

对使用MongoDB、Express、AngularJS和Node.js开发现代Web应用有兴趣的Web开发人员。

排版约定

在本书中,你会发现一些不同的文本样式,用以区别不同种类的信息。下面是这些样式的一些例子和解释。

  • 楷体

    表示新术语。

  • 等宽字体

    表示程序中使用的变量名、关键字。

代码段格式如下所示:

var message = 'Hello';

exports.sayHello = function(){
  console.log(message);
}

当我们希望你注意代码块中的某些部分时,相关的行或者文字会被加粗:

var connect = require('connect');
var app = connect();
app.listen(3000);

console.log('Server running at http://localhost:3000/');

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

$ node server

图像说明文字这个图标表示警告或需要特别注意的内容。

图像说明文字这个图标表示提示或者技巧。

读者反馈

欢迎提出反馈。如果你对本书有任何想法,喜欢它什么,不喜欢它什么,请让我们知道。要写出真正对大家有帮助的图书,读者的反馈很重要。

一般的反馈,请发送电子邮件至feedback@packtpub.com,并在邮件主题中包含书名。

如果你有某个主题的专业知识,并且有兴趣写成或帮助促成一本书,请参考我们的作者指南http://www.packtpub.com/authors

客户支持

现在,你是一位令我们自豪的Packt图书的拥有者,我们会尽全力帮你充分利用你手中的书。

下载示例代码

你可以用你的账户从http://www.packtpub.com下载所有已购买Packt图书的示例代码文件。如果你从其他地方购买本书,可以访问http://www.packtpub.com/support并注册,我们将通过电子邮件把文件发送给你。

勘误表

虽然我们已尽力确保本书内容正确,但出错仍旧在所难免。如果你在我们的书中发现错误,不管是文本还是代码,希望能告知我们,我们不胜感激。这样做,你可以使其他读者免受挫败,帮助我们改进本书的后续版本。如果你发现任何错误,请访问http://www.packtpub.com/submit-errata提交,选择你的书,点击勘误表提交表单的链接,并输入详细说明。勘误一经核实,你的提交将被接受,此勘误将上传到本公司网站或添加到现有勘误表。从http://www.packtpub.com/support选择书名就可以查看现有的勘误表。

侵权行为

版权材料在互联网上的盗版是所有媒体都要面对的问题。Packt非常重视保护版权和许可证。如果你发现我们的作品在互联网上被非法复制,不管以什么形式,都请立即为我们提供位置地址或网站名称,以便我们可以寻求补救。

请把可疑盗版材料的链接发到copyright@packtpub.com。

非常感谢你帮助我们保护作者,以及保护我们给你带来有价值内容的能力。

问题

如果你对本书内容存有疑问,不管是哪个方面,都可以通过questions@packtpub.com联系我们,我们将尽最大努力来解决。

目录

  • 版权声明
  • 致谢
  • 前言
  • 第1章 MEAN简介
  • 第2章 Node.js入门
  • 第3章 使用Express开发Web应用
  • 第4章 MongoDB入门
  • 第5章 Mongoose入门
  • 第6章 使用Passport模块管理用户权限
  • 第7章 AngularJS入门
  • 第8章 创建MEAN的CURD模块
  • 第9章 基于Socket.io的实时通信
  • 第10章 MEAN应用的测试
  • 第11章 MEAN应用的调试与自动化