2023前端面试八股文-Node篇

526 阅读2分钟

Node在前端中的作用

现在流行的各个框架(react、vue、angular、svelet等)的脚手架都是依赖于webpack、rollup、vite、gulp等工具来启动、构建项目,而这几个工具又都是用Node.js来运行的(现在Deno、Bun也能做到一部分了)。可以说,Node是前端各种脚手架工具的基石之一。

node的eventLoop和浏览器的区别

参考EventLoop在浏览器与NodeJS的区别 - 掘金 (juejin.cn)

它们的主要区别是执行微任务的时机是不同的,假如此刻宏任务有2个任务AB,此刻微任务队列什么都没有。

image.png

如果是 NodeJS版本 <= 10下, 在执行A任务的时候产生了微任务W,A任务执行完毕,那么会继续执行B,B执行完成之后再去执行微任务。

而 node >= 11 && 浏览器 执行A任务,产生了微任务,A执行完之后要去执行微任务。

下面的问题都偏向后端了, 纯前端不看也罢

egg了解吗

egg.js是阿里开源的基于koa开发的企业级框架, 拥有开箱即用的能力和完善的文档。(一般阿里系的面试官喜欢问, 吹就行了)

洋葱模型

洋葱模型就是中间件模型, 每一层就相当于一个中间件, 用来处理特定功能, 比如错误处理, 用户鉴权认证等等。

中间件的处理过程为, next()前请求, next(), next()后请求。 一个请求从接收到响应, 每个中间件都有两次处理时机。

image.png

在koa中, 通过app.use()来注册中间件。

node 项目如何发布

1 简单发布

目标服务器拉代码, 编译, 然后重启PM2即可。

2 使用docker发布

  1. 编译代码
  2. 把编译后的产物打包成docker镜像
  3. 把docker镜像同步到目标服务器
  4. 根据第三步的镜像生成docker容器并启动。

如何保证node的高可用,容灾等措施

使用云原生或者K8S来管理node容器