Node.js是领先的服务器端编程环境,MongoDB是最受欢迎的NoSQL数据库,而Angular是基于MVC的前端开发的领先框架。它们一起提供了一个易于实现的完全集成的Web开发栈,可以让Web程序员创建从服务器到客户端完全以JavaScript构建的高性能站点和应用程序。针对Angular 2,Angular 4和后续版本进行了更新,这个新版本的Node.js,MongoDB和Angular Web Development将展示如何将这三种技术整合到完整的工作解决方案中。它首先介绍每种技术的简明明了的教程,然后快速地开始构建常见的Web应用程序。
被国内企业广泛采纳的新一代Web开发套件标准实战教程 基于新版Node.js|MongoDB|Angular全面升级 面向商业级项目的企业完整集成方案
译者序
随着互联网的发展,曾几何时,“全栈工程师”(Full Stack Engineer)的概念开始兴起,这种职位要求应征者对开发堆栈的每个方面都有所掌握,包括服务器、网络及宿主环境、数据建模、业务逻辑、API/Action/MVC、用户界面等。过去,这意味着全栈工程师需要面对归属不同层次的多种软件环境和语言,并处理各层之间的交互,这些技术中的任何一种都要耗费大量的精力和时间来学习,因而会面临很大的挑战。现在,这种情况已经改变,JavaScript 语言既可用于客户端开发,又能用于编写服务器端应用程序,还能方便地与传统及新型数据库交互,其中有些代码还能复用,从而为开发功能丰富的互联网应用程序创造了良好的条件。
Node.js 是一种领先的服务器端编程环境,它和Express 的结合能够实现高度可伸缩的动态Web 服务器,并可用JavaScript 编写Web 服务。
MongoDB 是目前最流行的NoSQL 数据库,可用于Web 应用程序数据的存储,并能从Node.js JavaScript 代码访问。
Angular 正迅速成为基于MVC 的前端开发的领先框架,它的自定义指令扩展了HTML语言。
这三者整合在一起使得能够完全用JavaScript 创建从服务器到客户端浏览器的高性能站点和应用程序。
本书提供了将这3 种技术整合成全面的有效解决方案的完整指南。书中简要而清晰地讲述了这3 种技术,然后迅速转到构建几种常见的Web 应用程序上面。最后还用多个实际的例子实现了可以与Node.js Web 服务器交互的客户端服务,为用户提供了丰富的交互功能的动态浏览器视图,以及为Web 页面添加用户身份验证和嵌套评论等组件。
作者Brad Dayley 是一名高级软件工程师,精通jQuery、JavaScript、MongoDB,著有多本技术书籍,并在企业应用程序及Web 界面方面具有丰富的开发经验,本书正是他对实际工作成果的总结。第2 版增加了两位作者:Brendan Dayley 是经验丰富的技术书籍作家和Web 软件工程师;Caleb Dayley 则是计算机科学专业的大学生,他对于设计和开发下一代创新软件很有兴趣。
通过学习本书,读者将学会如何使用Node.js 和MongoDB 来建立更具可伸缩性的高性能网站,如何利用Angular 创新的MVC 方法构建更有效的网页和应用程序,以及如何把这三者结合在一起使用,从而提供卓越的下一代Web 解决方案。
李绿霞、卢林、陈克非、李洪秋、张慧珍、李又及、卢晓瑶、陈克翠、汤有四、李阳、刘雯也参与了部分翻译工作,感谢他们在本书翻译工作中的辛勤付出。
感谢我们的儿子卢令一,他读小学三年级了,他努力好学,本书的出版也有他的一份贡献。
感谢电子工业出版社张春雨编辑对我们的信任,让我们继续从事第2 版的翻译工作。
最后,希望这本书能对读者有所助益。但由于译者经验和水平有限,译文中难免有不妥之处,恳请读者批评指正!
卢涛 李颖
2018 年9月18 日
引言
欢迎阅读本书。本书将引领你进入使用JavaScript 的世界—在你的Web 开发项目中,从服务器和服务到浏览器客户端。本书涵盖Node.js、MongoDB 和Angular 的实现和集成,而它们是Web 开发世界中新兴的一些最令人兴奋和创新的技术。
本篇引言包括
? 本书受众;
? 为什么要阅读本书;
? 从本书中你将了解到的知识;
? Node.js、MongoDB 和Angular 分别是什么,以及为什么它们都是出色的技术;
? 本书的组织结构。
让我们开始吧。
本书受众
本书假定读者已经对HTML 的基础知识有所了解,并可以用现代编程语言完成一些编程。读者如果对JavaScript 有一定了解,将更容易理解本书的内容;但这不是必需的,因为本书确实也涵盖了JavaScript 的基础知识。
为什么要阅读本书
本书将教你如何创建功能强大的互动网站和Web 应用程序—从Web 服务器和服务器上的服务到基于浏览器的交互式Web 应用程序。这里所涉及的技术都是开源的,在服务器端组件和浏览器端组件上你都可以使用JavaScript。
本书的大多数读者想要掌握Node.js 和MongoDB,以便可以达到构建高度可伸缩和高性能网站的目的。大多数读者也想利用Angular 创新的MVC/MVVM(Model-View-Controller/Model-View-View-Model)方法来实现精心设计和结构化的网页和Web 应用程序。总之,Node.js、MongoDB 和Angular 提供了一个易于实现并完全集成的Web 开发套件,它可以让你实现神奇的Web 应用程序。
从本书中你将了解到的知识
阅读本书将帮助你构建现实中的动态网站和Web 应用程序。网站不再由HTML 页面和集成的图像及格式化的文本等简单的静态内容构成。相反,网站变得更加动态,单个网页往往充当一个完整的网站或应用程序。
使用Angular 技术,可让你在网页中构建逻辑,这可以与Node.js 服务器相互通信并从MongoDB 数据库获取必要的数据。Node.js、MongoDB 和Angular 的组合可以让你实现交互式动态网页。通过阅读本书,你将学会如下的事情:
? 如何使用Node.js 和Express 来实现一个高度可伸缩的动态Web 服务器;
? 如何在JavaScript 中创建服务器端的Web 服务;
? 如何在Web 应用程序中实现MongoDB 的数据存储;
? 如何用Node.js JavaScript 代码实现对MongoDB 的访问和交互;
? 如何定义静态和动态Web 路由并实现服务器端脚本来支持它们;
? 如何定义扩展HTML 语言的自定义Angular 组件;
? 如何实现可以与Node.js Web 服务器交互的客户端服务;
? 如何建立提供丰富的用户交互的动态浏览器视图;
? 如何将嵌套的组件添加到网页;
? 如何实现Angular 路由来管理客户端应用视图之间的转移。
何为Node.js
Node.js,有时被直接称作Node,是基于谷歌的V8 JavaScript 引擎的开发框架。你可以用JavaScript 编写Node.js 代码,然后V8 将它编译为要执行的机器代码。你可以用Node.js编写出大部分,或者甚至全部的服务器端代码,包括Web 服务器、服务器端脚本和任何支持Web 应用程序的功能。Web 服务器和支持Web 应用程序的脚本在同一个服务器端应用程序中运行这一事实,允许在Web 服务器和脚本之间有更紧密的集成。
Node.js 之所以是一个出色的框架,基于下面几个原因。
? JavaScript 端到端:Node.js 的一个最大优点是,它可以让你用JavaScript 同时编写服务器端和客户端脚本。在决定把逻辑放入客户端脚本还是服务器端脚本方面一直有困难。利用Node.js,你可以在客户端上编写JavaScript,并轻松地在服务器上适应它,反之亦然。另外一个好处是,客户端的开发者和服务器的开发者使用同一种语言。
? 事件驱动的可伸缩性:Node.js 应用独特的逻辑来处理Web 请求。使用Node.js,不是让多个线程等待处理Web 请求,而是采用一种基本的事件模型在同一个线程上处理它们。这使得Node.js Web 服务器可以用传统的Web 服务器不能做到的方式扩缩。
? 可扩展性:Node.js 有很多的追随者和一个活跃的开发社区。人们正在不断提供新的模块来扩展Node.js 的功能。此外,在Node.js 中易于安装和包含新的模块,你可以在几分钟内扩展Node.js 的项目来包含新的功能。
? 快速执行:建立Node.js,并在其中开发是超级容易的。在短短几分钟内就可以安装Node.js,并拥有一个能工作的Web 服务器。
何为MongoDB
MongoDB 是一个灵活的可伸缩的NoSQL 数据库。Mongo 这个名字来自单词“堆积如山”(humongous),用来强调MongoDB 提供的可伸缩性和性能。MongoDB 为需要存储诸如用户评论、博客或其他条目数据的高流量的网站提供了出色的网站后端存储,因为它可快速伸缩并易于实现。
下面是MongoDB 真正适合于Node.js 套件的一些原因。
? 针对文档:因为MongoDB 是针对文档的,所以数据在数据库中存储的格式,非常接近于你在服务器端和客户端脚本中处理它们的格式。这消除了把数据从行转换为对象和转换回来的需要。
? 高性能:MongoDB 是目前性能最高的数据库之一。尤其是在现在,有越来越多的人与网站进行交互,具有能够支持大流量的后端是很重要的。
? 高可用性:MongoDB 的复制模型使得它易于维护可伸缩性,同时又保持高性能。
? 高可伸缩性:MongoDB 的结构使得它易于通过在多个服务器上对数据共享实现水平伸缩。
? 无SQL 注入:MongoDB 是不容易受到SQL 注入攻击的(也就是向Web 表单或从浏览器的其他输入中输入SQL 语句,从而危及数据库的安全性)。这是因为对象被存储为对象,不使用SQL 字符串。
何为Angular
Angular 是由谷歌开发的JavaScript 客户端框架。Angular 背后的理论是提供一个框架,以便可以很容易地使用MVC/MVVM 框架实现设计良好的结构化网页和应用程序。
Angular 提供了在浏览器中处理用户输入、操纵客户端上的数据及控制元素如何在浏览器界面上显示的功能。下面是Angular 具有的一些优势。
? 数据绑定:Angular 利用其强大的范围机制,有一个将数据绑定到HTML 元素的简洁的方法。
? 可扩展性:Angular 架构允许你轻松地扩展语言的各个方面,以提供你自己的自定义实现。
? 整洁:Angular 迫使你编写整洁的、合乎逻辑的代码。
? 可重用代码:可扩展性和简洁代码的结合,使得易于用Angular 编写可重用的代码。事实上,在创建自定义服务的时候,此语言往往迫使你这样做。
? 支持:谷歌正把大量资金投入这个项目,这使得它比那些已失败的类似举措更具优势。
? 兼容性:Angular 基于JavaScript 并与JavaScript 标准有着密切的联系。这使得更易于将Angular 整合到你的环境和重用在Angular 框架结构内的现有代码片段。
本书的组织结构
本书分为6 个主要部分:
? 第1 部分“入门”概述了Node.js、MongoDB 和Angular 之间的相互作用,并对这3 种产品如何形成一个完整的Web 开发套件进行了概述。第2 章是JavaScript 的初步介绍,它提供了实现Node.js 和Angular 代码时,你需要用到的JavaScript 语言的基本知识。
? 第2 部分“学习Node.js”涵盖了Node.js 的语言平台,从安装到实现Node.js 模块。这部分将向你提供你需要的基本框架,以实现自定义Node.js 模块以及Web 服务器和服务器端脚本。
? 第3 部分“学习MongoDB”涵盖了MongoDB 数据库,从安装到与Node.js 应用程序的集成。本部分将讨论如何规划数据模型,以满足你的应用程序需求,以及如何从Node.js 应用程序对MongoDB 进行访问和交互。
? 第4 部分“使用Express 使生活更轻松”讨论了Node.js 的Express 模块以及如何利用它作为应用程序的Web 服务器。你将学习如何为数据设置动态和静态路由,以及如何实现安全性、缓存和Web 服务器的其他基本功能。
? 第5 部分“学习Angular”涵盖了Angular、框架的架构,以及如何将它集成到Node.js 套件。本部分介绍了创建自定义的HTML 组件和在浏览器中利用的客户端服务。
? 第6 部分“高级Angular”涵盖了更高级的Angular 开发,比如构建自定义指令和自定义服务。本部分还介绍了如何使用Angular 的内置HTTP 和路由服务。最后讲解了一些补充的富UI 示例,比如拖放组件的构建与动画的实现。
结束语
我们希望你和我们一样喜欢学习Node.js、MongoDB 和Angular。它们都是出色而创新的技术,使用起来充满乐趣。很快,你就可以加入这一庞大的Web 开发人员之列,和他们一起使用Node.js-to-Angular Web 套件来建立交互式网站和Web 应用程序了。享受这本书吧!
对比了一下第1版,前面的几部分,知识框架基本一样,内容有更新;主要变化的是angular部分,把整个的项目实战给删除了,缺少了一个完整的项目实战。