-
使用信号量、批处理或任务队列控制并发请求,避免资源耗尽。1.信号量通过acquire/release限制同时运行的任务数;2.批处理将请求分组,逐批执行;3.任务队列动态调度,保持最多max个并发任务。根据场景选择:信号量适合精细控制,批处理适用于简单批量操作,任务队列更优用于复杂持续任务流,平衡性能与稳定性。
-
答案:使用JavaScript操作WebSocket需掌握连接、发送、接收和关闭四个核心步骤。首先创建WebSocket对象并监听onopen事件建立连接;通过send()方法发送字符串或二进制数据;设置onmessage事件接收服务器消息;通过close()关闭连接,并利用onclose和onerror处理关闭状态与错误;可通过readyState查看连接状态,binaryType设置二进制数据类型,实现稳定通信。
-
CSS文件合并可减少HTTP请求,提升页面加载速度。通过手动或构建工具(如Webpack、Gulp、Vite)将多个CSS文件合并为少量文件,结合按页面拆分和Sass/Less预处理器组织结构,平衡性能与维护性,避免冗余加载。
-
JavaScript的事件循环是其非阻塞I/O和并发模型的核心机制。1.JavaScript运行在单线程环境中,通过事件循环协调代码执行、处理异步操作;2.异步任务如setTimeout、fetch等被交给宿主环境处理,完成后回调放入消息队列;3.事件循环持续检查调用栈是否为空,若空则从消息队列取出回调执行;4.消息队列分为宏任务队列(如setTimeout、I/O)和微任务队列(如Promise回调),微任务优先级更高,会在宏任务之间被清空;5.JavaScript通过事件循环与宿主环境协作,实现“协作
-
window对象是BOM的核心,作为JavaScript与浏览器交互的入口,它代表浏览器窗口并承载所有全局变量及BOM其他对象。1.它提供了访问浏览器功能的接口,如获取视口尺寸(innerWidth/innerHeight)、控制滚动(scrollTo/scrollBy)、管理定时器(setTimeout/setInterval)、弹出对话框(alert/confirm/prompt)、操作窗口(open/close)、访问其他BOM对象(document、location、navigator等)以及本地
-
监听JavaScript对象属性变化的核心方法是Proxy和Object.defineProperty;2.Proxy是现代首选方案,能拦截属性的读取、设置、删除及数组方法等几乎所有操作;3.Object.defineProperty仅能监听已存在的属性,无法监听新增属性或数组变异方法,适用于属性固定的简单场景;4.Proxy通过get和set拦截实现深度监听时需递归代理嵌套对象,但存在性能开销、循环引用、对象身份变化、序列化等问题;5.数组监听在Proxy中天然支持push、pop等方法,因其内部操作会
-
答案:JavaScript数组性能陷阱包括避免高频使用map、filter造成内存浪费,慎用concat导致重复内存分配,减少splice引起的元素移动,以及替代indexOf的线性查找。应优先用for循环、Set/Map和批量操作提升效率。
-
默认情况下CSS盒模型width仅包含内容,使用box-sizing:border-box可使width包含padding和border,推荐全局设置以统一布局计算,避免错位,提升可维护性。
-
grid-template-areas通过命名网格区域并用字符串定义布局,实现直观的CSS网格设计。每行字符串对应网格行,相同名称合并为矩形区域,句点表示空单元格,支持响应式调整与语义化命名,提升可读性和维护性。
-
浮动导致父容器高度塌陷,可通过overflow:hidden触发BFC或使用clearfix清除浮动。前者简单但可能裁剪溢出内容,后者兼容性好且不影響定位元素,推荐根据场景选择方案。
-
PerformanceAPI可监控页面加载、资源请求和自定义性能指标。通过NavigationTiming获取TTFB、白屏时间;ResourceTiming分析慢资源;UserTiming标记业务逻辑耗时;PerformanceObserver异步监听LCP等核心指标,助力构建前端监控体系。
-
模板引擎通过字符串生成HTML,虚拟DOM以对象映射UI并高效更新。1.模板引擎如Handlebars用{{}}插值和逻辑控制生成HTML字符串,直接操作真实DOM,易造成性能浪费;2.虚拟DOM如React、Vue将结构转为JS对象,通过Diff算法比对差异,批量更新真实DOM,减少重绘回流;3.Vue等框架融合两者,模板编译为渲染函数,兼顾开发体验与运行效率;4.简单项目选模板引擎,复杂应用优先虚拟DOM框架,提升动态更新性能。
-
使用本地服务器运行HTML文件需通过HTTP协议,可选Python命令启动服务、Node.js的http-server、VSCode的LiveServer插件或XAMPP等工具,确保AJAX等功能正常。
-
答案:通过封装JavaScript插件实现动态内容加载,采用类结构组织代码,支持滚动监听、防抖、加载提示与错误重试;利用IntersectionObserver优化性能,结合虚拟列表与数据缓存提升效率,并设计可扩展接口以适配多种触发方式与数据渲染场景。
-
设计离线优先PWA需以ServiceWorker为核心,安装时预缓存静态资源并采用CacheFirst策略;对动态内容使用Stale-While-Revalidate;通过IndexedDB持久化存储用户数据并优先读取本地内容;建立待同步队列结合BackgroundSyncAPI实现网络恢复后自动同步;监听online/offline事件优化提示与降级体验,注册自定义离线页,确保无网状态下功能可用、反馈明确。