博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js简介与架构
阅读量:6820 次
发布时间:2019-06-26

本文共 1266 字,大约阅读时间需要 4 分钟。

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

你可能感兴趣的文章
Kafka的Consumer负载均衡算法
查看>>
换个姿势学数学:二次函数与拆弹部队
查看>>
React-事件机制杂记
查看>>
[LeetCode] Unique Word Abbreviation 独特的单词缩写
查看>>
[20171105]exp imp buffer参数解析.txt
查看>>
JEESZ分布式框架--单点登录集成方案
查看>>
连载31:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
查看>>
22-高级路由:OSPF 路由认证:明文、密文
查看>>
APP推广如何实现邀请追踪?
查看>>
元旦晚会年终总结汇报PPT模板
查看>>
Linux环境下运行Java项目的sh脚步
查看>>
Couldn't register xxx with the bootstrap server.
查看>>
作为管理者,如何理解数据与业务?
查看>>
precreatewindow里面做了什么
查看>>
大数据开发第一步:Hadoop基础学习
查看>>
eclipse的jvm配置
查看>>
python的常用模块
查看>>
我的友情链接
查看>>
Delphi下WebBrowser应用示例
查看>>
AS3的http
查看>>