GolangHub

公众号:Golang语言开发栈

Node.js学习之Node.js介绍

Node.js是以Google V8 JavaScript引擎为基础的服务器端技术。

特点:

它具有很好的可扩展性,并使用了异步事件驱动IO,而没有使用线程或者独立进程。

它能很好地满足那些需要频繁访问但计算简单的网络应用的需求。

与传统的Web服务器的区别:

使用传统的Web服务器时,比如Apache,每次接收到用户对网络资源的请求时,Apache都会创建一个线程或者调用新的进程来处理。尽管Apache对请求的响应速度非常快,并在请求处理完毕后清理现场,但这种实现仍然占用了很多资源。访问频繁的网络应用会因此产生严重的性能问题。

与传统的Web服务器比较,Node不会为每个请求创建新的进程或者线程。相反,它对特定事件进行监听,当事件发生时按需做出响应。在等待事件的过程中Node并不阻止任何请求,并且事件循环是按照先到先得的简单方式进行处理。

Node的优势:

Node使用的函数调用并不都是异步的。一些对象针对同一功能可能会同时提供同步与异步版本的实现。

Node的事件循环和回调函数给我们带来了两大好处。

  1. 应用程序可以很容易地扩展,因为执行一个单线程并不会有非常大的资源开销。
  2. 无需诉求于多线程开发,却达到了节约又能高效使用资源的目的。也就是说,你不必创建一个线程安全的应用程序。

注意:因为开发异步应用时,不能假设一个异步函数在另一个函数被调用前就执行完成,因为这是无法保证的(除非你在第一个回调函数中调用另一个)。此外,全局变量在Node中是非常危险的,特别是在忘记了var关键字时。

更多精彩内容,请关注公众号 Golang语言开发栈公众号二维码
感谢赞赏.

Welcome to my other publishing channels