您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页nodejs 到底是什么?

nodejs 到底是什么?

来源:二三娱乐

理解 NodeJs

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

  • 注意其中的一些关键点: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进来, 这样你的c++程序就有了消息循环了. 不再是简单main函数了. 你可以订阅系统的事件, 然后当事件发生时, 系统会调用你的回调函数, 就跟windows上的button click事件一样方便. 而且是跨平台的哦. 是不是很酷. 你几乎可以订阅所有的系统事件, 比如socket事件, 文件读写事件等等.

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

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

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

  • 参考资料

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务