1、Node.js首要目标是提供一种简单的、用于创建高性能服务器及可在该服务器中运行的各种应用程序的开发工具。
2、Node.js修改了客户端到服务器端的连接方法,解决了 服务器所支持的最大同时连接用户量瓶颈的问题。因为它并不为每个客户端创建一个新的线程,而是为每个客户端连接触发一个在Node.js内部进行处理的事件。因此,如果使用Node.js,可以同时处理多达几万个用户的客户端连接。
3、在Node.js服务器中,运行的是高性能的V8 JavaScript脚本语言,该语言是一种被V8 JavaScript引擎所解析并执行的脚本语言。该引擎并不局限于在浏览器中运行,Node.js将其转用在了服务器中。
4、为了实现高性能,Node.js采用了两种机制:
- 非阻塞型/O机制:JavaScript只支持单线程。在处理一个事务过程中,存在一段等待时间,在这段时间里,它可以立即处理事务后面的代码,提高程序的执行效率
- 事件环机制:在Node.js中,一个时刻只能执行一个事件回调函数,但是在执行一个事件回调函数的中途可以转而处理其他事件,然后返回继续执行原事件回调函数
5、当应用程序需要处理大量并发的输入/输出,而在向客户端发出响应之前,应用程序内部并不需要进行非常复杂的处理的时候,我们应该考虑使用Node.js来进行该应用程序的开发。
6、在Node.js中是通过以模块为单位来划分所有功能,每一个模块为一个JS文件,每个模式中定义的全局变量或函数的作用范围也被限定在这个模块之中,只有使用exports对象才能将其传递到外部。在引用模块时,需要使用require函数。
//输出 exports.print = function(){...} //导入 var foo = require('./for.js') console.log(foo.print()
7、Node.js中的核心模块:
- assert:单元测试 添加的断言处理
- buffer:实现二进制数据的存储与转换
- child_process:实现子进程的创建与管理
- cluster:实现多进程
- console:为控制台输出信息
- crypto:实现数据的加密解密处理
- debugger:实现一个内置调试器来帮助开发者调式应用程序
- dns:实现与DNS相关的处理
- domain:实现多个I/O之间的协作处理
- events:为事件处理提供一个基础类
- fs:操作文件及文件系统
- http:实现HTTP服务器端及客户端
- https:实现HTTPS服务器端及客户端
- net:创建TCP服务器与客户端
- os:获取操作系统信息
- path:处理文件路径
- punycode:实现Punycode字符串的编码及解码
- querystring:处理HTTP请求中使用的查询字符串
- readline:读取一行标准输入流
- repl:实现REPL交互式运行环境
- stream:为流的输入/输出处理提供一个基础类
- string_decoder:实现从二进制数据到字符串数据之间的转换
- tls:使用OpenSSL来实现TLS/SSL通信处理
- tty:获取来自于TTY终端的信息
- url:实现URL字符串的解析与格式化
- util:实现各种实用函数
- vm:为JavaScript脚本代码提供一个独立的运行环境
- zlib:实现数据的压缩及解压处理
可以直接使用require函数,并使用模块名做为参数,来引用这些模块:
var http = require('http');
8、Node.js中追加的类、函数、对象
可以在不引用任何模块的情况下直接使用这些类、函数、对象。
- Buffer类:为二进制数据的存储提供一个缓存区
- setTimeout函数:在指定时间到达时执行一个指定的函数
- clearTimeout函数:取消指定函数的执行
- setInterval函数:指定每隔多少时间执行一个指定的函数
- clearInterval函数:取消指定函数的执行
- require函数:加载模块
- module对象:访问模块信息
- process对象:访问进程信息