Node在前端中的作用
现在流行的各个框架(react、vue、angular、svelet等)的脚手架都是依赖于webpack、rollup、vite、gulp等工具来启动、构建项目,而这几个工具又都是用Node.js来运行的(现在Deno、Bun也能做到一部分了)。可以说,Node是前端各种脚手架工具的基石之一。
node的eventLoop和浏览器的区别
参考EventLoop在浏览器与NodeJS的区别 - 掘金 (juejin.cn)
它们的主要区别是执行微任务的时机是不同的,假如此刻宏任务有2个任务AB,此刻微任务队列什么都没有。
如果是 NodeJS版本 <= 10下, 在执行A任务的时候产生了微任务W,A任务执行完毕,那么会继续执行B,B执行完成之后再去执行微任务。
而 node >= 11 && 浏览器 执行A任务,产生了微任务,A执行完之后要去执行微任务。
下面的问题都偏向后端了, 纯前端不看也罢
egg了解吗
egg.js是阿里开源的基于koa开发的企业级框架, 拥有开箱即用的能力和完善的文档。(一般阿里系的面试官喜欢问, 吹就行了)
洋葱模型
洋葱模型就是中间件模型, 每一层就相当于一个中间件, 用来处理特定功能, 比如错误处理, 用户鉴权认证等等。
中间件的处理过程为, next()前请求, next(), next()后请求。 一个请求从接收到响应, 每个中间件都有两次处理时机。
在koa中, 通过app.use()来注册中间件。
node 项目如何发布
1 简单发布
目标服务器拉代码, 编译, 然后重启PM2即可。
2 使用docker发布
- 编译代码
- 把编译后的产物打包成docker镜像
- 把docker镜像同步到目标服务器
- 根据第三步的镜像生成docker容器并启动。
如何保证node的高可用,容灾等措施
使用云原生或者K8S来管理node容器