-
Vue生命周期按“创建、挂载、更新、销毁”四阶段划分,每阶段含before和after两个钩子:创建阶段beforeCreate(实例初建)和created(数据就绪);挂载阶段beforeMount(虚拟DOM生成)和mounted(DOM挂载完成);更新阶段beforeUpdate(虚拟DOM重渲染)和updated(真实DOM更新);销毁阶段beforeUnmount(卸载前清理)和unmounted(完全销毁)。
-
答案:使用HTML5Canvas结合JavaScript绘制动态时钟,通过arc绘制表盘外圈,createRadialGradient实现渐变填充,for循环绘制12个刻度及数字,利用translate和rotate变换简化指针旋转逻辑,通过requestAnimationFrame实现每秒更新动画,配合save/restore保持坐标系状态,最终呈现一个带立体感渐变、平滑转动的模拟时钟。
-
DocumentFragment能绕过重排,因其脱离DOM树、不参与渲染流程,所有操作在内存中完成,仅最终插入时触发一次重排;正确流程为:创建fragment→批量添加节点→单次append到真实DOM。
-
模板字符串必须用反引号定义,支持多行与${}表达式插值,可嵌套及配合标签函数实现XSS过滤等高级功能,但默认不转义且旧版Node.js可能不支持。
-
纯HTML+CSS仅能实现静态布局,交互功能(如跳转、悬停菜单、轮播)必须依赖JS;导航错位常因父级li未设position:relative导致子菜单定位丢失;轮播图卡顿因缺少JS控制及transition动画;按钮无响应源于事件监听缺失或JS加载错误。
-
JavaScript模块路径大小写敏感性由操作系统和运行环境决定:macOS/Windows默认不敏感但不可靠,Linux及区分大小写卷严格匹配;Webpack/Vite继承系统行为,ESLint和CI应强制校验。
-
本文介绍如何根据group字符串(如"1.2.2.1")自动解析层级路径,并将扁平属性映射为深度嵌套的JSON结构,核心是逐级切分路径、惰性创建中间节点。
-
高阶函数剥离埋点的核心是用包装器自动注入日志、耗时统计与上报逻辑,业务函数零修改;支持同步/异步、动态配置、环境隔离及装饰器协同,确保异常不丢失、上报不遗漏。
-
trycatch仅捕获同步异常(如JSON.parse失败、访问undefined属性),不捕获SyntaxError、异步错误、未await的Promise拒绝及资源加载失败;需小范围包裹、明确响应、正确处理async/await与finally清理。
-
strong表示内容重要性,具有语义强调功能,影响可访问性、SEO和辅助技术识别;b仅实现纯视觉加粗,无任何语义含义。
-
BEM+classnames是React中管理CSS类名的刚需组合,前者规范命名结构,后者负责条件合并,二者分工明确、不可替代。
-
JavaScript模板字符串用反引号定义,支持变量插值、多行书写、任意表达式嵌入及标签函数,比传统字符串拼接更安全、易读、灵活。
-
用loading="lazy"和LQIP组合实现渐进加载:src指向小尺寸模糊占位图,data-src存高清图地址,通过IntersectionObserver监听视口进入后替换src并添加loaded类触发动画,避免直接对大图应用filter导致性能问题。
-
ServiceWorker无法实现“永不过期”缓存,因Cache-Control:immutable仅影响浏览器条件请求,不阻止SW主动删除或解决URL变更问题;真正长期驻留需靠版本化cacheName(如static-v1.2.0)、install预缓存、activate阶段精准清理旧缓存,并标准化请求URL以确保match成功。
-
Jest更适合中大型长期维护项目,Vitest更适合新项目和Vite生态;两者均需正确配置以避免模块解析错误,可靠测试需覆盖边界、隔离副作用、验证行为而非实现细节。