Node.js硬实战:115个核心技巧 - (EPUB全文下载)

文件大小:0.4 mb。
文件格式:epub 格式。
书籍内容:

Node.js硬实战:115个核心技巧
第一部分 Node基础
第二部分 实践中的技巧
第三部分 编写模块
A 社区
第一部分 Node基础
Node拥有极小的标准库来为模块开发人员提供最底层的API。虽然找到第三方模块相对容易,但很多任务可以不用它们来完成。在接下来的章节中我们将深入了解一些核心模块并且探索如何在实际中使用它们。
通过强化你对这些模块的理解,你将成为一个更为全面的Node开发者。在分析第三方模块时,你也能拥有更多的自信和理解。
1 入门
本章概要
•为什么使用Node
•Node的主要特性
•构建一个Node应用
Node已经迅速成为一个可行并且真正高效的web开发平台。在Node诞生之前,在服务端运行JavasScript是件不可思议的事情,并且对其他的脚本语言来说,要实现非阻塞I/O通常需要依赖特殊的类库。但Node的出现改变了这一切。
JavaScript与非阻塞I/O的组合极为强大:在JavaScript与生俱来的callback特性下,我们能在同一进程中异步地操作文件读写、网络sockets以及其他的I/O操作。
这本书面向的是有一定经验的Node开发者,因此本章只是帮助你进行快速的复习。如果你想从Node基础开始系统的学习,你可以阅读Node.js in Action(作者Mike Cantelon、Marc Harter、TJ Holowaychuk,以及Nathan Rajlich;Manning出版社2013年出版)。
在这一章中,我们将介绍Node是什么,它的工作原理,以及为什么它是不可或缺的。在第2章你将从Node全局对象——那些所有的Node进程都能访问的对象与方法开始体验Node。
阅读之前
本书面向的是有一定经验的中高级Node开发者,虽然本章内容涵盖了一些入门资料,但后面的章节难度会很大。建议Node的入门开发者在阅读本书之前先看一下Node.js in Action。
1.1 Node入门
Node是一个针对网络应用开发的平台,它基于Google的JavaScript运行时引擎V8。但它不仅仅只是V8。Node的标准类库是它非常重要的一部分。它涵盖了从TCP服务端到同步或者异步的文件管理。这本书将教你如何正确地使用这些模块。
在这之前,让我们从一些场景入手来看看为什么使用Node以及何时应该使用它。
1.1.1 为什么使用Node
假设你正在开发一个广告服务器,每分钟需要发布几百万条的广告。Node的非阻塞I/O将是一个高效的解决方案,因为服务器能够最大限度地利用到所有的I/O资源,而这一切不需要你写特殊的底层代码。并且,假如你已经有一支会写JavaScript的开发团队,那么他们应该可以直接参与到Node的项目中。传统的web平台将无法做到这一点,这也是为什么像微软这样的公司也在积极地推动Node,尽管他们已经有了像.NET那么优秀的平台。Visual Studio(.NET IDE)的用户可以安装一些工具[1]来支持对Node的智能提示、性能监测,甚至npm。微软还开发了WebMatrix,它不但能直接支持Node,而且还能部署Node项目。
Node把非阻塞I/O作为提高某些类型应用的性能的方式。JavaScript传统的事件机制意味着在异步编程中,它有着相对方便以及容易理解的语法。在传统的编程语言中,I/O的操作将阻塞进程直到它完成为止。Node的异步文件读写以及网络API意味着在这些相对较慢的I/O操作处理的时候主进程仍然能处理其他请求。图1.1展示了如何使用异步的网络和文件API同时处理多个任务。
在图1.1中,Node的http模块接收到并且解析了一个新的HTTP请求❶,然后服务端的应用代码使用异步接口,将一个回调函数传入数据库的读取函数中来进行一次数据查询❷。在等待数据返回的同时服务器能够从文件系统中读取网页模板文件❸,这个模板文件被用来展示网页。一旦数据库完成查询,模板内容和数据库的返回数据将被用来渲染页面❹。
图1.1 用Node构建的广告服务器
在服务器处理这个请求的同时,服务器还可以用可用的资源处理其他的请求❺。在不用考虑多线程的情况下开发这个广告服务,你可以仅使用最基本的JavaScript编程技术,通过Node,非常高效地使用服务器I/O资源。
其他Node适用的场景是Web API和网络爬虫,如果你需要下载以及截取网页的内容,那么Node将是非常完美的解决方案,因为它能模拟DOM操作,并且运行客户端JavaScript脚本。而且在这个场景中,Node有着性能优势,因为网络爬虫主要的消耗在于网络和文件读写的I/O。
假如你需要调用或者开发一个JSON API,Node也是一个非常棒的选择,因为它使得操作JavaScript对象变得非常简单。Node的一些web框架(例如express)能够快速地搭建JSON API,我们将在第9章详细讨论这个。Node不仅仅局限于web应用,你可以创建任意你想要的TCP/IP服务,比如网络游戏服务器,通过TCP/IP套接字向各类玩家发送游戏状态,也可以在后台任务中维护游戏数据,将数据发送给玩家。在第7章中,我们将探索Node的网络API。
什么时候使用Node
下面的表格有一些Node适用的应用例子,来帮你像一个真正的Node开发者一样来考虑这个问题。
Node的强项
1.1.2 Node的主要特性
Node的主要特性是它的标准类库、模块系统以及npm(包管理系统),当然还有很多其他的。但本书主要针对教你如何使用Node的这些部分。我们将使用被认为是最佳实践的第三方类库,但你会看到很多Node的内置特性。
实际上Node最强大的特性是它的标准类库,它主要由二进制类库以及核心模块两部分组成,二进制类库包括libuv,它为网络以及文件系统提供了快速的事件轮循以及非阻塞的I/O。同时它还有http类库,所以你可以很快确定你的http客户端与服务端。
图1.2是对Node内部的高层次概述,展示了各个模块是 ............

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » Node.js硬实战:115个核心技巧 - (EPUB全文下载)