Node.js与前端开发实战 青训营笔记

108 阅读2分钟

这是我参与第五届青训营伴学笔记的第七天

node.js

1.应用场景

【1】前端工程化

【2】web服务端应用

node.js由Vercel研发 开发效率高

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

SSR

【3】electron跨端桌面应用

   vscode

大型公司内的效率工具 提高公司运营时的效率 大部分场景在选型时,都值得考虑

BFF,SRR应用 如 modern.js

2.node.js运行时结构

b42a67298709357974e370c1d8d1d9f.png

n-apl 与其他端连接

V8:诊断调试工具

libuv:事件循环 系统调用 封装API

特点

1.异步I/O

当node.js 执行I/O操作时,会影响返回后恢复的操作,而不是阻塞线程并占用额外内存

ccc221207b65dd780b974a796477fc1.png

2.单线程

js单线程

实际:js线程+uv线程池+V8任务线程池+V8inspector线程

优点:不用考虑多线程状态同步问题,也就不需要锁;同时还能比较高效率地利用系统资源

缺点

阻塞会产生更多负面影响

解决办法:多进程或多线程

3.跨平台

(大部分功能,API)

node.js跨平台+js无需编译环境(+web跨平台+诊断工具跨平台)

=开发成本低(大部分场景无需担心跨平台问题),整体学习成本低

【3】编写http server

安装node.js nvm4w

windows安装node.js教程

快速了解node.js代码 node.js core

如何编译

Maintaing the build files

诊断

是一个低频,重要同时也相当有挑战的方向 ,是企业衡量自己能否依赖一门语言的重要参考

难点

需要了解node.js的底层,需要了解操作系统以及各种工具

wasm,napi

node.js(因为V8)是运行wasm的天然容器,和浏览器wasm是同一运行时,同时node.js支持 wasi

napi执行c接口的代码时,同时保留原生代码的性能

不同编程语言之间通信的一种方案