当前位置: 首页 > article >正文

前端面试准备-5

1.Node.js中的process.nectTick()有什么作用

将一个回调函数插入到当前执行栈的尾部,在下一次事件轮询之前调用这个回调函数

2.什么是Node.js中的事件发射器,作用是什么,如何使用

提供一种机制,可以创建、触发和监听自定义事件。他的作用是允许我们对异步事件进行订阅并在事件发生时执行回调函数

使用步骤:

①:创建一个事件发射器对象

②:使用on()方法为特定事件注册监听器

③:使用emit()方法触发事件

const EventEmitter = require('events');
const eventEmitter = new EventEmitter();// 注册一个事件和对应的监听器
eventEmitter.on('greet', (name) => {console.log(`Hello, ${name}!`);
});// 触发事件
eventEmitter.emit('greet', 'World');

3.Node.js中的事件循环

事件循环(Event Loop) 是其异步编程模型的核心机制,是一个永远允许的循环,它允许 Node.js 以非阻塞的方式执行代码,尽管 JavaScript 本身是单线程的。

阶段说明
timers处理 setTimeoutsetInterval
I/O callbacks执行延迟到下轮循环的 I/O 回调
idle, prepare内部使用
poll轮询新的 I/O 事件
check处理 setImmediate 回调
close callbackssocket.on('close')

 

4.什么是非阻塞I/O,Node.js如何实现非阻塞I/O

非阻塞 I/O(Non-blocking I/O) 是指发起 I/O 操作(如读取文件、访问数据库、网络请求)时,程序不需要等待该操作完成,而是可以继续执行后续代码。一旦 I/O 完成,通过回调函数、事件或 Promise 通知程序结果。

5.如何解决前端SPA应用首屏加载速度慢的问题

①: 代码分割

  • 动态导入:利用 ES6 的 import() 动态加载模块,按需加载代码。
  • 路由懒加载:结合路由框架(如 React Router、Vue Router),实现路由组件的懒加载。
  • webpack 配置:利用 webpack 的 splitChunks 插件来分割代码,确保只有当用户访问特定页面时才加载相应的代码块。

②: 开启 gzip 压缩。

  • 在服务器端配置 gzip 压缩,减少传输的数据量。

③:优化资源加载

  • 预加载与预渲染:使用 <link rel="preload"> 和 <link rel="prefetch"> 提前加载关键资源。
  • 使用 Service Worker:通过 Service Worker 缓存静态资源,减少网络请求。
  • 延迟加载:对于非关键资源(如图片和视频),使用懒加载技术延迟加载。

④:图片优化

⑤:Server-Side Rendering (SSR)

  • 对于首屏加载特别敏感的应用,可以考虑采用服务端渲染技术,预先生成 HTML 内容发送给客户端,减少首屏空白时间。

 

 

 

 

 

 

 

http://www.lryc.cn/news/2395478.html

相关文章:

  • Spring Boot 启动流程深度解析:从源码到实践
  • 深度学习|pytorch基本运算-乘除法和幂运算
  • 嵌入式通用集成电路卡市场潜力报告:物联网浪潮下的机遇与挑战剖析
  • 4.2.4 Spark SQL 数据写入模式
  • 论文笔记: Urban Region Embedding via Multi-View Contrastive Prediction
  • Android 缓存应用冻结器(Cached Apps Freezer)
  • 初学者如何微调大模型?从0到1详解
  • 西瓜书第十一章——降维与度量学习
  • Portainer安装指南:多节点监控的docker管理面板-家庭云计算专家
  • NanoGPT的BenchMarking.py
  • 测试用例及黑盒测试方法
  • CentOS 7 环境下部署 LAMP
  • vscode实用配置
  • React 项目中封装 Excel 导入导出组件:技术分享与实践
  • 【PhysUnits】15.1 引入P1后的加一特质(add1.rs)
  • 【2025CCF中国开源大会】RISC-V 开源生态的挑战与机遇分论坛重磅来袭!共探开源芯片未来
  • python完成批量复制Excel文件并根据另一个Excel文件中的名称重命名
  • Vue-2-前端框架Vue基础入门之二
  • CPT208 Human-Centric Computing 人机交互 Pt.7 交互和交互界面
  • ubuntu20.04.5-arm64版安装robotjs
  • [网页五子棋][匹配模块]前后端交互接口(消息推送机制)、客户端开发(匹配页面、匹配功能)
  • 【数据分析】Matplotlib+Pandas+Seaborn绘图
  • NLP学习路线图(十五):TF-IDF(词频-逆文档频率)
  • [Redis] Redis命令在Pycharm中的使用
  • openpnp - 给M4x0.7mm的直油嘴加油的工具选择
  • Azure Devops 系列之三- vscode部署function app
  • EasyExcel复杂Excel导出
  • 1,QT的编译教程
  • C++基础算法————深度优先搜索(DFS)
  • React 第五十节 Router 中useNavigationType的使用详细介绍