这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
今天我学习了Nodejs
一,本节课重点内容
本节课重点内容上大致可以分为以下几点。
- 1-Nodejs的应用场景
- 2-Nodejs运行时结构
- 3-编写Http-Server
- 4-Debug与部署
- 5-诊断与追踪
- 6-WASM与NAPI
通过上面的内容,我由浅入深,学习了Nodejs的很多知识。
二,详细知识介绍
Nodejs有非常多的优势,比如效率较高,接近很多编译型语言,独特的SSR优势,对于前端结合的一些场景有着天然的优势,生态较为丰富,对于前端来说学习曲线平缓。
接下来老师引用了这张图,这是Nodejs运行时结构的图示
接下来老师介绍了Node的特性
- 异步IO
- 单线程
- 出色的跨平台性
接下来老师带领我们开始编写了Http Server实战。这里老师采用了原生的写法,没有使用一些框架,例如Express等。这样可以更了解node底层。
接下来我们学习了编写Http Server,收发get,post,编写静态服务的服务器,编写React的SSR
然后讲解了Nodejs的Debug---V8 Inspect,它可以做很多事情。
- 查看console.log的内容
- breakpoint
- 高CPU,死循环下查看状态
- 性能分析
最后部署上也决一些问题
- 守护进程:当进程退出时,重新拉起
- 多进程,: cluster便捷利用多线程
- 记录进程状态,用于诊断
值得一提的是,Nodejs只是JS单线程,实际线程包括:JSxianc ,uv线程池 , V8 Inspector线程。
三,实践的例子
const http = require('http');
const fs = require('fs');
const path = require('path');
const url = require('url');
const prot = 3000;
const server = http.createServer((req,resp)=>{
const infor = url.parse(req.url);
const file = fs.createReadStream(path.resolve(__dirname,'.'+info.pathname))
file.pipe(resp);
});
server.listen(port,()=>{
console.log(`server is running on ${port}`);
});
四,课后个人总结
这节课学到了很多nodejs的知识。