前端与Nodejs|青训营笔记

100 阅读2分钟

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

今天我学习了Nodejs

一,本节课重点内容

本节课重点内容上大致可以分为以下几点。

  • 1-Nodejs的应用场景
  • 2-Nodejs运行时结构
  • 3-编写Http-Server
  • 4-Debug与部署
  • 5-诊断与追踪
  • 6-WASM与NAPI

通过上面的内容,我由浅入深,学习了Nodejs的很多知识。

二,详细知识介绍

Nodejs有非常多的优势,比如效率较高,接近很多编译型语言,独特的SSR优势,对于前端结合的一些场景有着天然的优势,生态较为丰富,对于前端来说学习曲线平缓。

接下来老师引用了这张图,这是Nodejs运行时结构的图示

1675354530052.png

接下来老师介绍了Node的特性

  • 异步IO
  • 单线程
  • 出色的跨平台性

image.png

接下来老师带领我们开始编写了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的知识。