字节内部node.js课 | 青训营笔记

81 阅读2分钟

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

Node.js的使用场景

  1. 前端工程化
    1. Bundle:Webpack,vite,esbuild
    2. Transpile:bablejs,ts
  2. Web服务端应用
    1. 学习曲线平缓,开发效率较高
    2. 运行效率接近常见的编译语言
    3. 社区生态丰富及工具链成熟
    4. 与前端结合的场景会有优势
  3. Electron跨端桌面应用

Node.js运行时的结构

  1. 异步I/O
    • 提升性能
  2. 单线程
    • 优点:不需要考虑多线程状态同步问题(不需要锁),同时还能高效利用系统资源
    • 缺点:会出现阻塞现象
  3. 跨平台(大部分功能,API)
    • 开发成本低,整体学习成本低

编写Http Server

目标:

  1. 编写http Server + CLient 收发get,post请求
    • 注意最好通过promise来编写,这样子可以让我们的代码更加便于维护
  2. 编写静态文件服务器
    • 与高性能、可靠的服务相比还差CDN和分布式存储
    • Stream风格API的优点:减少内存空间的占用,节约容器方面的成本
    • 设置正确的Content-Type,可以提升我们服务的兼容性
  3. 编写SSR服务
    • SSR有什么特点:1、相比传统的HTML模板引擎:避免重复编写代码 2、相比SPA:首屏渲染更快,SEO友好 3、通常qps较低,前端代码编写时要考虑服务端渲染情况
    • 难点:需要处理打包代码、需要思考前端代码在服务端运行时的逻辑、移除对服务端无意义的副作用,或者重置环境
  4. 使用V8 inspector进行调试,诊断
    • 在启动时加入--inspect
    • 使用场景:1、查看console.log 2、breakpoint 3、高CPU、死循环 4、高内存占用 5、性能分析
  5. 部署简介
    • 部署要解决的问题:

      • 守护进程:当进程退出时,重新拉起
      • 多进程:cluster便捷地利用多进程
      • 记录进程状态,用于诊断
    • 容器环境

      • 通常有健康检查的手段,只需要考虑多核cpu利用率即可

个人思考

之前学习过nodejs但是学习的并不多,今天通过讲师的讲解,让我对如何提升自己对这方面知识的认识有了更多的途径,学习了很多比较偏细节的知识点。