Node是一个网络应用开发平台。它基于谷歌的JavaScript运行时引擎V8,但又不仅仅是V8。Node的标准类库是其中非常重要的一部分。它涵盖了从TCP服务器到同步或异步文件管理。Node已迅速成为一个可行且真正高效的Web开发平台。在Node之前,在服务器端运行JavaScript是不可想象的,而对于其他脚本语言,非阻??塞I/O通常需要依赖专门的类库。JavaScript与非阻塞I/O的结合是极其强大的:在JavaScript固有的回调特性下,我们可以在同一个进程O操作中异步操作文件读写、网络套接字等I/O。为什么使用Node假设你正在开发一个广告服务器并且需要每分钟发布数百万个广告。Node的非阻塞I/O将是一种高效的解决方案,因为服务器可以最大限度地利用所有I/O资源,并且不需要开发人员编写特殊的底层代码。Node使用非阻塞I/O作为提高某些类型应用程序性能的方法。JavaScript传统的事件机制意味着在异步编程中,它是相对方便和易于理解的语法。在传统的编程语言中,I/O操作会阻塞一个进程,直到它完成。Node的异步文件读写和网络API意味着main进程仍然可以处理其他请求。Node.js的主要特点Node的主要特点是它的标准类库、模块系统和npm(包管理系统),当然还有很多其他的。其实Node最强大的特性就是它的标准类库,主要由二进制类库和核心模块组成。二进制类库包括libv,它为网络和文件系统提供快速事件循环和非阻塞I/O。它还具有http类库,因此您可以快速确定您的http客户端和服务器。Node的核心模块主要是用JavaScript编写的。不清楚的可以直接阅读源码。Node环境的关键部分如下:EventEmitter事件的各个接口Node开发者都会接触到EventEmitter接口,它是大多数Node核心模块的基础。流、网络和文件系统都继承自它。Streams,高扩展性I/O的基础,继承自EventEmitters,可以在不可用的预测输入下创建数据,比如网络连接,数据传输的速度取决于其他用户在做什么。FS:文件处理Node的文件模块不仅可以通过非阻塞I/O读写文件,它也有同步的方法。可以通过fs.stat异步获取文件信息,也可以通过fs.statSync同步读取。网络:创建网络客户端和服务器网络模块是http模块的基础,也可以用来创建通用的网络客户端和服务器。全局对象和其他模块(例如进程对象)允许您将数据传入和传出标准I/O流(stdout、stdin)。还有无处不在的控制台对象。
