这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
-
使用场景:
- 前端工程化 难以替代
- 服务端应用 与前端结合有优势 ssr, 工具链成熟
- electron跨端应用 选型值得考虑, 效率高
-
BFF backend for FE , 飞书, 懂车帝等后端都是node开发
-
v8, js运行时, 以及inspector诊断工具
-
libuv事件循环
-
异步IO 读文件不阻塞现线程
-
单线程 js线程 uv线程 v8线程 inspect线程
-
跨平台 开发成本低
-
HTTP server
import http from 'http'; const server = http.createServer((req, res) => { res.end('Hello World'); }); const port = 3000; server.listen(port, () => { console.log(`Server running at port ${port}`); }); //可以基于此编写返回json的server和静态资源服务器, 高可用的静态资源服务器需要CDN和分布式存储 -
ssr 难点
- 静态资源打包 css文件和图片资源不参与打包
- 在服务端运行的js是否符合预期 数据获取的函数不应该在服务端运行
- window对象 node没有window对象, 把数据挂载到global对象会出问题
-
debug
- node --inspect 使用chrome devtools 调试node应用
- logpoint 可以使用log point来替换console.log()
- 内存工具 可以使用内存快照来分析内存中有哪些对象, 来检测内存泄漏问题
- CPUprofile 可以检测CPU具体执行了哪些函数
-
部署
- 进程守护 pm2
- 多线程
- 容器化技术