一、NodeJS是什么?
Node是一个服务器端JavaScript解释器。
Node.js是一套用来编写高性能网络服务器的JavaScript包。
二、Node的目标是什么?
Node 公开宣称的目标是 “旨在提供一种简单的构建可伸缩网络程序的方法”。
我们来做个数学题。在 Java™ 和 PHP 这类语言中,每个连接都会生成一个新线程,每个新线程可能需要 2 MB 的配套内存。
在一个拥有 8 GB RAM 的系统上,理论上最大的并发连接数量是 4,000 个用户。
随着您的客户群的增长,如果希望您的 Web 应用程序支持更多用户,那么,您必须添加更多服务器。
Node 解决这个问题的方法是:更改连接到服务器的方式。
每个连接发射一个在 Node 引擎的进程中运行的事件,而不是为每个连接生成一个新的 OS 线程(并为其分配一些配套内存)。
Node 声称它绝不会死锁,因为它根本不允许使用锁,它不会直接阻塞 I/O 调用。Node 还宣称,运行它的服务器能支持数万个并发连接。
三、Node如何工作?
Node 本身运行 V8 JavaScript。
事件驱动编程
实际上,服务器端和客户端没有任何区别。没错,这没有按钮点击操作,也没有向文本字段键入的操作,但在一个更高的层面上,事件正在 发生。
一个连接被建立,这是一个事件!数据通过连接进行接收,这也是一个事件!数据通过连接停止,这还是一个事件!
为什么这种设置类型对 Node 很理想?JavaScript 是一种很棒的事件驱动编程语言,因为它允许使用匿名函数和闭包,更重要的是,任何写过代码的人都熟悉它的语法。事件发生时调用的回调函数可以在捕获事件处进行编写。这样可以使代码容易编写和维护,没有复杂的面向对象框架,没有接口,没有过度设计的可能性。
只需监听事件,编写一个回调函数,其他事情都可以交给系统处理!