Node.js学习|青训营笔记

48 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第7天

一、本堂课重点内容:

cfe72d74af5bcae1d92c3eee854f1b9.jpg

二、详细知识点介绍:

  • 应用场景

    前端工程化————难以替代

    web服务端应用

     优点:
         
         1、学习曲线平缓(了解运行环境的不同即可)
         
         2、运行效率高(不需要编译环境)
         
         3、社区生态丰富,工具链成熟(减少开发时间,相较于其他语言而言相关包的成熟度不够(?))
         
         现状:竞争激烈,但仍然有独特的优势,渲染主要使用语言为Node.js
    

    Electron跨端桌面应用

     例如vscode、zoom等商业应用以及公司内部的效率工具会基于Electron研发
     
     优点:开发效率比较高,跨段有优势,运行比较稳定
     
     缺点:比较慢,资源消耗高
    

    字节跳动中的应用 ———— BFF应用,SSR应用

  • 运行时的结构

image.png

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架构一文