Node.js简介与架构

本文深入解析Node.js的内部架构,介绍其如何通过V8引擎和libuv等组件实现高效JavaScript运行环境。同时,探讨了Binding与Addon在连接底层C/C++库与JavaScript代码中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Node.js 是什么?

node.js是一个javascript运行时环境,javascript的运行平台。

那么问题来了,为什么node.js可以运行javascript呢?
node.js内置了v8,V8google开源的JavaScript引擎,用于将JavaScript代码转换成机器码,然后执行。v8是以C++语言开发的。

node.js=V8+内置基本模块(大多用JavaScript编写),类似JRE=JVM+java标准.

Node.js架构

要想深入理解 Node.js,我们需要把 Node.js 进行必要的拆解,了解每个组成部分的作用,它们之间如何交互,最终构成 Node.js 这个强大的运行时环境。
node.js架构

上图是 Node.js的内部结构图。我们可以看到,自底向上主要可以分成三层:最底层是 Node.js 依赖的各种库,有 V8libuv 等;中间层是各种 Binding,也就是胶水代码;最上层是应用代码,可使用 Node.js的各种 API

·v8

Google开源的高性能JavaScript引擎,它将JavaScript代码转换成机器码,然后执行,因此速度非常快。V8C++语言开发,GoogleChrome 浏览器正是使用的 V8引擎。

·libuv

libuvC语言开发,内部管理着一个线程池。在此基础之上,提供事件循环(Event Loop)、异步网络I/O、文件系统 I/O等能力。

·其他底层依赖库

c-arescrypto (OpenSSL)、http-parser 以及zlib。这些依赖提供了对系统底层功能的访问,包括网络、压缩、加密等。
********
Node.js 底层的依赖库,有的以C 语言开发,有的以 C++ 语言开发,如何让应用代码(JavaScript)能够与这些底层库相互调用呢?这就需要中间层的 Binding 来完成。Binding 是一些胶水代码,能够把不同语言绑定在一起使其能够互相沟通。在 Node.js 中,binding 所做的就是把 Node.js 那些用 C/C++写的库接口暴露给 JS环境。

中间层中,除了 Binding,还有 AddonBinding 仅桥接Node.js 核心库的一些依赖,如果你想在应用程序中包含其他第三方或者你自己的 C/C++ 库的话,需要自己完成这部分胶水代码。你写的这部分胶水代码就称为 Addon。本质上都是完成桥接的作用,使得应用与底层库能够互通有无。这么做的目的之一是代码重用:这些功能已经有现存的成熟实现,没必要只是因为换个语言环境就重写一遍,如果桥接调用一下就足够的话。另一个原因是性能:C/C++这样的系统编程语言通常都比其他高阶语言(PythonJavaScriptRuby 等等)性能更高,所以把主要消耗 CPU的操作以 C/C++ 代码来执行更加明智。

什么是胶水代码???请点这里

转载于:https://www.cnblogs.com/iamsmiling/p/10690674.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值