nodejs 到底是什么?

作者: 并肩走天涯 | 来源:发表于2016-08-16 16:14 被阅读678次

    理解 NodeJs

    Nodejs 自己使用了Openssl.
    在Nodejs 0.6之前, Nodejs是动态链接到 Openssl 库的, 而之后的版本都是静态链接的.

    • nodejs 到底是什么?
      nodejs 官方 有一段解释: "Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices."

      注意其中的一些关键点:nodejs是一个平台, 它构建在chrome的v8引擎之上,能简易的构建快速,可扩展的网络应用程序...
      这里官方用的网络应用程序,整个描述没有提到webserver等等概念,这段描述中,有两个是重点,把握住这两点,就算掌握了nodejs的真谛:

      • chrome的v8引擎
      • 事件驱动的非阻塞io模型
    • nodejs核心
      nodejs只是libuv的一个应用.
      nodejs核心主要是由两部分组成的:

      • v8引擎, 它负责把javascript代码解释成本地的二进制代码运行.
      • libuv, 类似windows上的窗口消息机制,它主要负责订阅和处理系统的各种内核消息,而且它也实现了消息循环(这个几乎就和windows 的窗口消息循环是一个概念). 它的前身是linux上的libev, 专门封装linux上的内核消息机制,后来nodejs重写了它, 并在windows上使用iocp技术重新实现了一遍.所以nodejs现在能跨平台运行在windows上了.
      • 闭包回调,非阻塞的异步处理机制.
    • libuv
      nodejs 其实就是 libuv 的一个应用而已。

      你自己写程序也可以集成libuv进来, 这样你的c++程序就有了消息循环了. 不再是简单main函数了. 你可以订阅系统的事件, 然后当事件发生时, 系统会调用你的回调函数, 就跟windows上的button click事件一样方便. 而且是跨平台的哦. 是不是很酷. 你几乎可以订阅所有的系统事件, 比如socket事件, 文件读写事件等等.

      nodejs只是libuv的一个应用. 先了解libuv才能了解nodejs的实质和前世今生.

    • nodejs 汇总
      nodejs简单的说只是把javascript解释成c++的回调, 并挂在libuv消息循环上, 等待处理. 这样就实现了非阻塞的异步处理机制(non-blocking I/O model).

      那么为什么是javascript而不是其他的语言. 很简单, 因为javascript的闭包. 这非常适合做回调函数. 因为我们一般都希望当回调发生时, 它能记住它原来所在的上下文. 这就是闭包最好的应用场景.

    • nodejs到底做了什么?
      从另一个角度看,基础的工作都分别由v8libuv做了.那么nodejs到底做了什么呢? 先看一下nodejs的文档,除了用javascript封装libuv框架之外,nodejs实现了这些api功能. 这些api大部分是用javascript写的, 也有一部分是c++写的.

      nodejs官方的仓库中有很多nodejs的插件. 有了这些plugins,nodejs就可以实现非常丰富的功能了.

    • 参考资料

    相关文章

      网友评论

        本文标题:nodejs 到底是什么?

        本文链接:https://www.haomeiwen.com/subject/fkmpsttx.html