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

98 阅读2分钟

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

应用场景

前端工程化-web服务应用-Electron跨端桌面应用

01web服务端应用

  • 社区生态丰富以及工具链成熟-可以减少开发时间,但是相关包成熟度不如其他语言。V8 inspector-F12-诊断调试工具
  • 与前端结合的场景有优势(SSR服务端渲染)-自动生成html

Electron跨端桌面应用-开发效率比较高

02运行时结构

  • 内部很多代码很多是js写成的,更多的代码是c++的。

N-API:通过js无法满足的需求,例如性能需求。

zlib:压缩和解压缩算法。c-ares:dns查询的库。openSSl:网络层的加密解密。

npm安装node-fetch模块,用户代码调用node-fetch模块,因为是js代码 到v8执行,调用http模块再到调用底层c++的api,再用llhttp将http协议序列化和反序列,将数据用libuv传给远端。

特点

  • 01异步I/O-内存占用更少,不用等待。会在响应恢复操作,而不是阻塞线程

  • 02单线程-不适合cpu密集的操作 只有主线程js线程是单线程,其他线程铥到别的线程池。(加密解密放入nv线程池)

  • 优点:不用考虑多线程状态同步问题,也就不需要锁,同时可以较高效利用系统资源。

  • 缺点:阻塞会产生更多负面影响。 解决办法:多进程或多线程。

  • 03跨平台

node.js跨平台+js无需编译环境=开发成本低,整体学习成本低

03编写http server

Node.js安装

推荐nvm工具-多版本管理,不支持window环境

返回js 返回json数据

回调函数: 不好维护管理的模式, 静态文件服务器例子

04延伸话题

总结

感觉一些知识不是很适合真正零基础学员,适合已经学过的人,想要进行更深的理解,适合学过一遍但是没有完全掌握,漏细节知识。想要进行更深理解的学习的人。