前端技术文章
-
用 XState v5 的表单提交场景说明 guard 如何决定 transition、action 如何更新 context 或安排副作用,并给出异步 actor 与版本边界的处理方式。281 收藏 -
XState 父状态机向子 actor 发事件时,关键是区分 actor logic、invoke id 和 actor ref。本文用 XState v5 示例说明 sendTo 的固定 ID 写法、spawn 动态引用和事件未处理时的三层排查方法。191 收藏 -
Alpine.js 修改响应式数据后如何等 DOM 更新?本文用回调式和 Promise 式 $nextTick 说明读取文本、测量尺寸、聚焦元素的正确时机,并划清请求完成与浏览器布局的边界。367 收藏 -
htmx 局部替换会让目标区域重新合并 HTML。本文说明怎样用稳定 ID 和 hx-preserve 保留指定元素,分析输入框、文件、iframe 与视频的边界,并给出替代布局和复查清单。241 收藏 -
htmx 的 hx-sync 可以协调字段校验、表单提交和实时搜索请求。本文用表单竞争场景说明 abort、drop、replace、queue 的差异,并给出提交优先、校验优先和只保留最后一次查询的写法。390 收藏 -
用Lit组件示例区分attribute命名、类型转换和property反射,说明camelCase默认映射、布尔attribute语义及对象属性入口,帮助组件作者为HTML和JavaScript调用方设计清晰接口。429 收藏 -
用 Promise.withResolvers 将一次事件转换为可 await 的结果,结合 AbortSignal 处理预先取消,并在成功、取消与注册异常时移除监听器,避免只用 once 或 race 留下订阅。327 收藏 -
文章 · 前端 | 2天前 | 前端 · javascript · SyntaxError Web Components customElements.whenDefined Custom Elements 自定义元素名称
customElements.whenDefined 传入无效标签名时会直接抛出 SyntaxError,而不是返回等待中的 Promise。本文区分名称契约与注册时序,给出前置处理、统一注册名和批量等待的实用写法。223 收藏 -
讲清 customElements.whenDefined 如何批量等待自定义元素注册完成,使用 Set 去重标签名、Promise.all 汇总等待,并处理空集合、路由切换和内部渲染边界。222 收藏 -
从首屏内容、渐进增强、脚本时序和兼容降级四个约束出发,比较 Declarative Shadow DOM 与客户端 attachShadow 的职责边界,并给出可复用的 Web Component 初始化写法。440 收藏 -
闭合阴影根不必牺牲焦点委托。用声明式模板保留 delegatesFocus,区分宿主聚焦、Tab 顺序与外部观察,并避开布尔属性、重复建根和字符串注入的常见误区。120 收藏 -
服务端输出 Declarative Shadow DOM 后,自定义元素仍可能保持未知 HTMLElement 状态。本文从解析时序、CustomElementRegistry 一致性和升级观测三个指标入手,给出可复用的定位代码与修复结构,帮助 SSR 组件稳定触发 constructor 和 connectedCallback。387 收藏 -
富文本预览常见的换行消失、连续空格变成一个空格,可以在展示层用 white-space-collapse: preserve-breaks 保留换行并压缩空白,再用 pre-line 作为兼容回退。308 收藏 -
CSS white-space-collapse: preserve-spaces 会保留连续空白,制表符和换行段则转为空格,因此文本占用宽度和换行机会都可能改变。本文用最小示例拆解它与其他取值的差异,并给出排查宽度异常的选择方法。222 收藏 -
区分标准 mask-composite 与 WebKit 旧合成语法,说明层列表、运算方向与简写重置,并提供两层 exclude 示例和限定范围的 xor 回退。103 收藏