nodejs 到底是什么?

理解 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引擎之上,能简易的构建快速,可扩展的网络应用程序…
这里官方用的网络应用程序,整个描述没有提到web、server等等概念,这段描述中,有两个是重点,把握住这两点,就算掌握了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到底做了什么?
从另一个角度看,基础的工作都分别由v8和libuv做了.那么nodejs到底做了什么呢? 先看一下nodejs的文档,除了用javascript封装libuv框架之外,nodejs实现了这些api功能. 这些api大部分是用javascript写的, 也有一部分是c++写的.

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

参考资料

Neil: 你可能误解nodejs了–通俗的概括nodejs的真相

原文:https://blog.csdn.net/weixin_34124939/article/details/87427157

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值