这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
课堂笔记
课程重点内容:
- 应用场景
- 运行时结构
- HttpServer
应用场景:
(1)前端工程化都基于node.js
(2)web服务端应用,如编写HttpServer、SSR渲染模式等
(3)类似于用Electron框架开发的跨端桌面应用
运行时结构:
通过npm引入包的js代码,然后经过V8引擎渲染并运行,通过libuv可以调用系统api、llhttp可以处理http请求等,底层由C++代码支持。
举例:
使用npm的Node-fetch发起请求时,经历的过程有:npm包拉取代码到用户代码层在V8中执行,在发送http请求时,会调用js代码的request,然后用C++调用系统api,此时会调用llhttp模块进行序列化和反序列化,再通过libuv创建TCP连接,最后在js代码中收到数据。
运行时结构的三大特点:
(1)异步IO不会阻塞线程
(2)单线程
(3)跨平台
HttpServer:
(1)收发get/post请求 (2)编写静态文件服务器 (3)编写SSR服务 (4)用inspector进行调试、诊断 (5)部署
(1)创建一个httpserver,再对端口号进行监听,get请求
发起post请求并响应:
(2)编写静态文件服务器
在static文件夹中书写静态文件
开启服务引入静态文件
(3)编写SSR服务
qps即每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。因特网上,经常用每秒查询率来衡量域名系统服务器的机器的性能,即为QPS。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间。一般需要达到139QPS,因为是峰值。
SSR(在服务端渲染)
(4)调试
(5)部署
总结:
node.js应用场景主要有以下三个方面:前端工程化都基于node.js、web服务端应用、类似于用Electron框架开发的跨端桌面应用。运行时结构的三大特点为:异步IO、单线程和跨平台。通过node.js还可以编写get/post服务、静态资源服务、SSR渲染等。