这是我参与第五届青训营伴学笔记的第七天
node.js
1.应用场景
【1】前端工程化
【2】web服务端应用
node.js由Vercel研发 开发效率高
社区生态丰富以及工具链成熟(npm V8 )
SSR
【3】electron跨端桌面应用
vscode
大型公司内的效率工具 提高公司运营时的效率 大部分场景在选型时,都值得考虑
BFF,SRR应用 如 modern.js
2.node.js运行时结构
n-apl 与其他端连接
V8:诊断调试工具
libuv:事件循环 系统调用 封装API
特点
1.异步I/O
当node.js 执行I/O操作时,会影响返回后恢复的操作,而不是阻塞线程并占用额外内存
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接口的代码时,同时保留原生代码的性能
不同编程语言之间通信的一种方案