node | 青训营笔记

58 阅读1分钟

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

  1. 使用场景:

    • 前端工程化 难以替代
    • 服务端应用 与前端结合有优势 ssr, 工具链成熟
    • electron跨端应用 选型值得考虑, 效率高
  2. BFF backend for FE , 飞书, 懂车帝等后端都是node开发

  3. v8, js运行时, 以及inspector诊断工具

  4. libuv事件循环

  5. 异步IO 读文件不阻塞现线程

  6. 单线程 js线程 uv线程 v8线程 inspect线程

  7. 跨平台 开发成本低

  8. 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和分布式存储
    
  9. ssr 难点

    • 静态资源打包 css文件和图片资源不参与打包
    • 在服务端运行的js是否符合预期 数据获取的函数不应该在服务端运行
    • window对象 node没有window对象, 把数据挂载到global对象会出问题
  10. debug

    • node --inspect 使用chrome devtools 调试node应用
    • logpoint 可以使用log point来替换console.log()
    • 内存工具 可以使用内存快照来分析内存中有哪些对象, 来检测内存泄漏问题
    • CPUprofile 可以检测CPU具体执行了哪些函数
  11. 部署

    • 进程守护 pm2
    • 多线程
    • 容器化技术