现在开始学习《Node.js开发指南》,所以这是上面的介绍性文字。
1.Node.js或者Node是一个可以让JavaScript运行在服务器端的平台。
2.Node.js是一个为实时Web应用开发而诞生的平台,摒弃了传统平台依靠多线程来实现高并发的设计思路,而采用了单线程、异步式I/O、事件驱动式程序的设计模型。
3.Node.js有着强大而灵活的包管理器(node package manager,npm),有MySQL、PostgreSQL、MongoDB数据库接口,有模板语言解析、CSS生成工具、邮件、加密、图形、调试支持,图形用户界面和操作系统API工具。
4.传统意义上,JavaScript是由ECMAScript、文档对象模型(DOM)和浏览器对象模型(BOM)组成,而Mozilla则指出JavaScript由Core JavaScript和Client JavaScript组成,造成这样的差异是因为浏览器支持度的原因。而Node.js中的JavaScript只是Core JavaScript,或者说是ECMAScript的一个实现,不包含DOM、BOM或者Client JavaScript,因为Node.js不运行在浏览器中,不需要使用浏览器许多特性,也就不存在JavaScript的浏览器兼容性问题。
5.Node.js使用的是单线程模型,对于所有I/O都采用异步式的请求方式,避免了频繁的上下文切换。Node.js在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式I/O请求完成后会被推送到事件队列,等待程序进程进行处理。
6.Node.js的异步机制是基于事件的,所有的磁盘I/O、网络通信、数据库查询都以非阻塞的方式请求,返回的结果由事件循环来处理。Node.js进程在同一时刻只会处理一件事情,完成后立即进入事件循环检查并处理后面的事件。
7.架构:Node.js开发者在libev和libeio的基础上还抽象出了一层libuv。对于POSIX操作系统(是一套操作系统API规范,遵守POSIX规范的操作系统是Unix、Linux、Mac OS X等),libuv通过封装libev和libeio来利用epoll或kqueue。而在WIndows下,libuv使用了WIndows的IOCP(输入输出完成端口)机制,以在不同平台下实现同样的高性能。