学习Node.js|青训营笔记

75 阅读2分钟

这是我来参加[第五届青训营]笔记创作活动的第七天。

今天跟着欧阳亚东老师学习了node.js。

node.js的主要内容

image.png

node.js的应用场景

1、前端工程化

Bundle:webpack,vite,esbulid,parcel

Uglify:uglifyjs

Transpile:bablejs,typescript

其他语言加入竞争:esbulid,parcel,prisma

现状:难以替代

2、Web服务端应用

学习曲线平缓,开发效率较高

运行效率接近常见的编译语言

社区生态丰富及工具链成熟(npm,V8 inspector)

与前端结合的场景会有优势(SSR)

现状:竞争激烈,node.js有自己独特的优势

3、Electron跨端桌面应用

商业应用:vscode,slack,discord,zoom

大型公司内的效率工具

现状:大部分场景在选型时,都值得考虑

Node.js运行时结构

特点:单线程(实际是js线程+uv线程池+V8任务线程池+V8 Inspector线程,优点不用考虑多线程状态同步问题,也不需要锁,同时还能比较高效地利用系统资源;缺点是阻塞会产生更多负面影响;解决办法是多线程或者多进程); 异步I/O,在响应返回后恢复操作,而不是阻塞线程并占用额外内存 跨平台,node.js跨平台+js不用编译环境 image.png

安装node.js ,一般推荐用nvm image.png

编写http server,根据老师讲的和网上资料,总结出首先导入http模块,然后创建web服务器实例,再为服务器实例绑定一个request事件,监听客户端的请求,最后通过server.listen监听服务器的启动,代码如图

image.png

总结:通过本节课,我学到了如何利用node.js去编写自己的web服务器,也学到了如何编写接口,在实际开发中可以解决很多问题。