Node.js入门全解

Node.js是什么

  • Node.js是一个平台
  • 他将多种技术组合起来
  • 让JavaScript也能调用系统接口、开发后端应用

Node.js用到了哪些技术

  • V8引擎
  • libuv
  • C/C++实现的c-ares、http-parser、OpenSSL、zlib等库

Node.js技术架构
在这里插入图片描述
bindings

Node.js用C++对http_parser金行封装,使它符合某些要求,封装的文件叫做http_parser_bindings.cpp
用Node.js提供的编译工具将其编译为.node文件
JS代码可以直接require这个.node文件
这样JS就能调用C++库,中间的桥梁就是binding
由于Node.js提供了很多binding,所以加个s
// 这就是bindings

libuv

FreeBSD系统上有kqueue
Linux系统上有epoll
Windows系统上有IOCP
Ryan为了一个跨平台的伊步I/O库,开始写libuv
libuv会根据系统自动选择合适的方案
// libuv功能
可以用于TCP/UDP/DNS/文件 等的异步操作

V8

JS源代码变成本地代码并执行
维护调用栈,确保JS函数的执行顺序
内存管理,为所有对象分配内存
垃圾回收,重复利用无用的内存
实现JS的标准库
// 其他
V8不提供DOM API
V8执行JS是单线程的
可以开启两个线程分别执行JS
V8本身是包含多个线程的,如垃圾回收为单独线程
自带event loop 但Node.js基于 libuv 自己做了一个

Event Loop

操作系统可以触发时间,JS可以处理事件
Event Loop就是对事件处理顺序的管理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Supernova_gu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值