Node.js | 青训营笔记

78 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第10天

Node.js的应用场景

  1. 前端工程化
  2. Web服务端应用
  3. Electron跨端桌面应用

前端工程化

  • Bundlewebpackviteesbuildparcel
  • Uglifyuglityjs
  • Transpilebablejstypescript
  • 其他语言加入竞争:esbuildparcelprisma

现状:难以替代

Web服务端应用

  • 学习曲线平缓,开发效率较高
  • 运行效率接近常见的编译语言
  • 社区生态丰富及工具链成熟 (npm,V8 inspector
  • 与前端结合的场景会有优势(SSR)
  • 现状:竞争激烈,Node.js有自己独特的优势

Electron跨端桌面应用

  • 商业应用:vscode,slack,discord,zoom
  • 大型公司内的效率工具
  • 现状:大部分场景在选型时,都值得考虑

Node.js运行时结构

image.png v8:JavaScript Runtime,诊断调试工具(inspectorlibuv:ebentloop(事件循环),syscall(系统调用)

特点

image.png

异步I/O操作

Node.js执行I/O操作时,会在响应返回后操作,而不是阻塞线程泵站用额外内存等待

单线程

  • JS单线程 实际:JS线程 + uv线程池 + V8任务线程池 + V8 Inspector线程

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

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

跨平台

Node.js 跨平台+JS 无需编译环境(4 Web 跨平台 + 诊断工具跨平台)

=

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

编写Http Serve

Http serve

`const http = require('http')

const server = http.createServer((req, res) => { res.end("hello") })

const port = 3000

server.listen(port,() => { console.log('listening on: ', port) })`

image.png

client

image.png

image.png

这里用了很多回调函数,好用但是不太好管理,例如不知道什么时候触发

方法

image.png

静态文件

image.png

SSR

服务器端渲染(Server-Side Rendering)是指由服务侧完成页面的 HTML 结构拼接的页面处理技术,发送到浏览器,然后为其绑定状态与事件,成为完全可交互页面的过程。(源自百度百科)

优势

  • 相比传统HTML模板引擎,避免重复编写代码
  • 相比SPA,(不考虑后端渲染),首屏渲染更快,SEO(搜索引擎优化)会更友好

单页Web应用(single page web application,SPA),就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。

缺点

  • 通常qps(每秒查询率)较低
  • 更难编写,需要考虑服务端渲染情况

image.png

部署

image.png