这是我参与「第五届青训营」伴学笔记创作活动的第7天
Node.js的使用场景
- 前端工程化
- Bundle:Webpack,vite,esbuild
- Transpile:bablejs,ts
- Web服务端应用
- 学习曲线平缓,开发效率较高
- 运行效率接近常见的编译语言
- 社区生态丰富及工具链成熟
- 与前端结合的场景会有优势
- Electron跨端桌面应用
Node.js运行时的结构
- 异步I/O
- 提升性能
- 单线程
- 优点:不需要考虑多线程状态同步问题(不需要锁),同时还能高效利用系统资源
- 缺点:会出现阻塞现象
- 跨平台(大部分功能,API)
- 开发成本低,整体学习成本低
编写Http Server
目标:
- 编写http Server + CLient 收发get,post请求
- 注意最好通过promise来编写,这样子可以让我们的代码更加便于维护
- 编写静态文件服务器
- 与高性能、可靠的服务相比还差CDN和分布式存储
- Stream风格API的优点:减少内存空间的占用,节约容器方面的成本
- 设置正确的Content-Type,可以提升我们服务的兼容性
- 编写SSR服务
- SSR有什么特点:1、相比传统的HTML模板引擎:避免重复编写代码 2、相比SPA:首屏渲染更快,SEO友好 3、通常qps较低,前端代码编写时要考虑服务端渲染情况
- 难点:需要处理打包代码、需要思考前端代码在服务端运行时的逻辑、移除对服务端无意义的副作用,或者重置环境
- 使用V8 inspector进行调试,诊断
- 在启动时加入--inspect
- 使用场景:1、查看console.log 2、breakpoint 3、高CPU、死循环 4、高内存占用 5、性能分析
- 部署简介
-
部署要解决的问题:
- 守护进程:当进程退出时,重新拉起
- 多进程:cluster便捷地利用多进程
- 记录进程状态,用于诊断
-
容器环境
- 通常有健康检查的手段,只需要考虑多核cpu利用率即可
-
个人思考
之前学习过nodejs但是学习的并不多,今天通过讲师的讲解,让我对如何提升自己对这方面知识的认识有了更多的途径,学习了很多比较偏细节的知识点。