在现代前端开发中,自动化测试 已成为保障代码质量和开发效率的重要手段。而在众多测试框架中,Jest 以其零配置开箱即用、极高的性能、以及对 React 等框架的良好支持而脱颖而出。本文将带你深入了解 Jest 的优势、配置方法、TDD 流程、核心与高级功能,以及它与其他测试框架的对比。
2025年07月21日
在现代前端开发中,自动化测试 已成为保障代码质量和开发效率的重要手段。而在众多测试框架中,Jest 以其零配置开箱即用、极高的性能、以及对 React 等框架的良好支持而脱颖而出。本文将带你深入了解 Jest 的优势、配置方法、TDD 流程、核心与高级功能,以及它与其他测试框架的对比。
2025年07月21日
1.微任务
在谈论Node的事件循环机制之前,先补充说明一下 Node 中的“微任务”。这里说的微任务(microtasks)其实是一个统称,包含了两部分:
Node 在执行微任务时, 会优先执行 nextTick task queue 中的任务,执行完之后会接着执行 promise task queue 中的任务。所以如果 process.nextTick 的回调与 promise.then 的回调都处于主线程或事件循环中的同一阶段, process.nextTick 的回调要优先于 promise.then 的回调执行。
2025年07月21日
在互联网蓬勃发展的当下,视频内容已毫无争议地成为人们获取信息、享受娱乐休闲时光的核心方式。据权威数据统计,全球每天有数十亿小时的视频被观看,视频流量在网络总流量中的占比逐年攀升,预计在未来几年内将超过 80%。如此庞大的视频消费需求,使得视频播放网站如雨后春笋般涌现,而在众多功能中,记录用户的观看进度成为了决定用户体验优劣的关键因素。它不仅能让用户在不同设备、不同时段实现无缝续播,极大地提升观看的便捷性,还能为网站运营者提供宝贵的数据洞察,助力精准运营。那么,这一看似平常的功能,背后究竟隐藏着怎样复杂而精妙的技术实现原理呢?接下来,让我们一同深入探索这片技术的 “神秘花园”。
2025年07月21日
在JavaScript开发中,事件循环是一个非常重要的概念,它决定了代码的执行顺序和性能表现。虽然浏览器和Node.js都使用事件循环来处理异步任务,但它们的实现和行为存在一些关键差异。本文将详细介绍Node.js中的事件循环机制,并与浏览器环境进行对比,帮助你更好地理解和应用这些知识。
2025年07月21日
复制以下内容至文本文件,修改文件后缀txt为html,即可使用。
<!DOCTYPE html>
<html lang="zh-CN">
2025年07月21日
今天看到一道面试题,是关于async/await、promise和setTimeout的执行顺序,题目如下:
async function async1() {
console.log('async1 start');
await async2();
console.log('asnyc1 end');
}
async function async2() {
console.log('async2');
}
console.log('script start');
setTimeout(() => {
console.log('setTimeOut');
}, 0);
async1();
new Promise(function (reslove) {
console.log('promise1');
reslove();
}).then(function () {
console.log('promise2');
})
console.log('script end');
复制代码2025年07月21日
各位朋友!你有没有过这样的经历:明明代码看起来没毛病,逻辑也对,可运行起来就是“出乎意料”?比如,你设置了一个定时器让它1秒后执行,结果发现另一段看起来在它“后面”的代码反而先跑完了;又或者,你想用网络请求获取数据,结果数据还没回来,后面的代码已经因为缺少数据报错了。是不是瞬间有种“我的代码怎么不听话了?”的抓狂感?这种“不听话”的背后,通常都指向JavaScript里一个非常核心、却又常常被忽视的机制——
2025年07月21日
在前端的业务场景中:点击按钮,发起请求。在请求还未结束的时候,一个按钮可以重复点击,导致接口重新请求多次(如果后端不做限制)。轻则浪费服务器资源,重则业务逻辑错误,尤其是入库操作。
传统解决方案:使用防抖函数,但是无法解决接口响应时间过长的问题,当接口一旦响应时间超过防抖时间,测试单身20年的手速照样还是可以点击多次。