这是我来参加[第五届青训营]笔记创作活动的第七天。
今天跟着欧阳亚东老师学习了node.js。
node.js的主要内容
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不用编译环境
安装node.js ,一般推荐用nvm
编写http server,根据老师讲的和网上资料,总结出首先导入http模块,然后创建web服务器实例,再为服务器实例绑定一个request事件,监听客户端的请求,最后通过server.listen监听服务器的启动,代码如图
总结:通过本节课,我学到了如何利用node.js去编写自己的web服务器,也学到了如何编写接口,在实际开发中可以解决很多问题。