这是我参与「第五届青训营」伴学笔记创作活动的第7天
一、本堂课重点内容:
二、详细知识点介绍:
-
应用场景
前端工程化————难以替代
web服务端应用
优点: 1、学习曲线平缓(了解运行环境的不同即可) 2、运行效率高(不需要编译环境) 3、社区生态丰富,工具链成熟(减少开发时间,相较于其他语言而言相关包的成熟度不够(?)) 现状:竞争激烈,但仍然有独特的优势,渲染主要使用语言为Node.jsElectron跨端桌面应用
例如vscode、zoom等商业应用以及公司内部的效率工具会基于Electron研发 优点:开发效率比较高,跨段有优势,运行比较稳定 缺点:比较慢,资源消耗高字节跳动中的应用 ———— BFF应用,SSR应用
-
运行时的结构
Node Standard Library 标准库,如 Http、Buffer、fs 模块。它们都是由 JavaScript 编写的,可以通过require(..)直接能调用
Node Bindings 沟通 JS 和 C++ 的桥梁,封装 V8 和 Libuv 的细节,向上层提供基础API服务。这一层是支撑 Node.js 运行的关键,由 C/C++ 实现
acron
node-inspect 用来调试
v8 调试工具,node.js效率较高的优势基于v8引擎
nghttp2 与http2相关的模块
zlib 常见的压缩与解压缩算法
c-ares DNS查询的库
lhttp http协议的解析
OpenSSL 常用于网络层加密与解密
-
特点
1、异步IO
会在响应返回后恢复操作,而不是阻塞线程并占用额外内存等待,效率比较高,对系统资源利用率比较高2、单线程
指Node.JavaScript线程,不适合cpu密集型的操作 优点:不用考虑多线程状态同步问题,不需要锁;高效利用系统资源 缺点:阻塞会产生更多负面影响 解决方法:多线程或多进程3、跨平台
开发成本低,学习成本低
三、引用参考:
- 运行时的结构部分内容参考引用于博客园 TerryMin 22年 nodejs架构一文