这是我参与「第五届字节青训营」伴学笔记创作活动的第6天。
课程内容
- Node.js的应用场景
- Node.js运行时结构
- 编写Http Server
Node.js的应用场景
- 前端工程化
- web服务端应用
- Electron跨端桌面应用
Node.js运行时结构
Node.js特点
- 异步I/O
- 单线程
- 跨平台
编写Http Server
Node.js安装
- Mac,Linux推荐使用nvm。多版本管理
- Windows推荐nvm4w或是官方安装包
编写Http Server
- Hello World
- JSON
编写Http Client
编写静态文件服务
相较于高性能且可靠的服务还差:1.CDN:缓存+加速2.分布式储存、容灾。
SSR(server side rendering)
SSR特点
- 相比传统HTML模板引擎:避免重复写代码
- 相比SPA(single page application):首屏渲染更快,SEO友好
缺点
通常qps较低,前端代码编写时需要考虑服务端渲染情况
SSR难点
- 需要处理打包工具
- 需要思考前端代码在服务端运行时的逻辑
- 移除对服务端毫无意义的副作用,或重置环境
Debug
- V8 Inspector:开箱即用、特性丰富强大、与前端开发一致、跨平台
- node --inspect
- open http://localhost:9229/json
- 场景
- 查看console.log内容
- breakpoint
- 高CPU、死循环:cpuprofile
- 高内存占用:heapsnapshot
- 性能分析
部署
要解决的问题
- 守护进程:当进程退出时,重新拉起
- 多进程:cluster便捷地利用多进程
- 记录进程状态,用于诊断
容器环境
通常用健康检查的手段,只需考虑多核cpu利用率即可。
个人小结
通过本次课程的学习,对Node.js 的优缺点、应用场景以及运行时的结构有了一定认识,对如何用其来编写Http Server有了一定的了解。