呜啦!日常碎碎念,偶尔掉落优质前端博文推荐、学习资源等
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态

图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
#优质博文 #前端 #CSS #WebComponents
Web Components: Working With Shadow DOM — Smashing Magazine

AI 摘要:本文深入介绍了 Web Components 中 Shadow DOM(影子 DOM)的原理和实际应用。作者不仅阐述了 Shadow DOM 在隔离 HTML 和 CSS、避免组件冲突中的重要性,也详细讲解了如何通过命令式和声明式方式创建 Shadow Root 以及相关配置(如克隆、序列化、焦点委托),并介绍了 slot(插槽)机制以实现内容分发。文章面向希望提升组件封装性、可维护性和安全性的前端开发者提供了清晰的实践指南。

1. Web Components 与 Shadow DOM 概述
• Web Components 由 Custom Elements(自定义元素)、HTML Templates(模板)和 Shadow DOM 等技术组成,三者可单独或组合使用。
• 传统 DOM 架构容易导致样式与脚本污染,难以维护。
• Shadow DOM 可实现 DOM、CSS、JS 的局部封装,提升组件独立性与安全性。

2. 为什么需要 Shadow DOM
• 现代应用常集成来自不同来源的组件,容易出现 ID 冲突与样式覆盖问题。
• 原生 HTML 元素如 video、details 等都标准使用 Shadow DOM 避免全局影响。

3. Shadow Root 的宿主元素与创建方式
• 多数 HTML 元素(如 div、section、span 等)均可作为 Shadow Root 宿主。
• 创建方式分为:
• 命令式(JavaScript):attachShadow({mode}),可选择 open(开放)或 closed(私有)模式,建议默认使用 closed,以增强安全性。
• 声明式(HTML):利用 <template shadowrootmode=""> 内嵌 shadow root,可和 Custom Elements 配合使用,支持 open/closed 模式。
• 讨论 open/closed 模式的脚本访问区别与安全考虑。

4. Shadow DOM 配置项
• clonable:允许带有 shadow root 的节点可被完整克隆(包括模板内容),提升组件复用性。
• serializable:能将 shadow root 内容序列化为字符串,便于缓存或跨节点注入,但需注意闭合模式下的数据泄露风险。
• delegatesFocus:启用后,宿主获得焦点时自动将焦点转移到 shadow root 内第一个可聚焦元素,常用于自定义表单组件,增强用户体验。

5. Slot(插槽)与内容分发
• 通过 slot,可实现宿主与 Shadow DOM 之间的内容插入与分发,支持默认与命名插槽,并可定义 fallback(回退)内容。
• slotchange 事件用于监听 slot 内容变化,便于实现响应式组件行为。
• slotted 内容仍属于 light DOM,可在文档级直接操作。

6. 实用建议与局限性
• 推荐以 closed-first 策略增强组件安全性,特殊场景下才使用 open。
• 注意表单与可访问性(ARIA)相关的局限,部分需要借助 ElementInternals 等新 API 进一步处理。


author Russell Beswick Web Components: Working With Shadow DOM — Smashing Magazine
#优质博文 #前端 #tools
1. CSS 的 backdrop-filter 属性(英文) 本文介绍 backdrop-filter 属性,可以产生毛玻璃的效果。 #css
backdrop-filter 是一个强大的 CSS 属性,它可以对元素后面的内容应用模糊、亮度调整等滤镜效果,从而创造出玻璃拟态(Glassmorphism)等视觉效果。文章介绍了 backdrop-filter 的基本用法,如 blur() 进行模糊处理,以及 brightness() 进行亮度调整。同时,作者强调了 backdrop-filter 仅影响元素背景,不会影响其自身内容。此外,文章探讨了浏览器兼容性问题,指出 Safari 早期支持较好,而部分浏览器(如 Firefox)需要启用实验性功能才能使用。最后,作者提供了示例代码,并建议开发者结合 background 颜色和 backdrop-filter 以获得最佳视觉效果。

2. 基于 signal 的 Web 组件(英文) #html #WebComponents
作者介绍自己写的一个 Web 组件,可以在不加其他 JS 库的情况下,实现 signal 功能。
本文探讨了在 HTML 中直接定义 信号(Signals) 的可能性,提出 <x-signal> 自定义元素,使其能够管理状态并自动更新 UI,而无需依赖 JavaScript 框架。该方法基于 HTML-based state 概念,直接从 HTML 解析初始值,并支持类型转换、动态渲染、自定义格式化及派生状态计算。最终,作者认为 <x-signal> 代表了一种更细粒度的 **Islets 架构**,在静态 HTML 中提供轻量级的响应式交互能力。

3. 鸿蒙 ArkTS VSCode 插件 #vscode #ArkTS #插件 #鸿蒙
ArkTS 是华为鸿蒙系统的开发语言,属于 TypeScript 的超集,这是它的 VSCode 插件。
4. RAG Web UI #AI #RAG
一个开源的 AI 桌面应用,可以上传文档,生成本地的知识库问答系统,基于 RAG(检索增强生成)技术。
5. TEN Agent #AI #agent #语音
一个 AI 的工具框架,快速打造语音相关的 AI 应用。
6. 富文本编辑器比较2025版(英文) #富文本 #编辑器
这个页面详细比较了 JS 的富文本"所见即所得"编辑器,一共十几个库,详细介绍每个库的特点
本文分析了主流的富文本编辑器框架,帮助开发者在 2025 年做出最佳选择。文章涵盖 Lexical、ProseMirror、Slate、Tiptap、Quill 等编辑器,并从 可扩展性、性能、易用性、社区支持 等方面进行了对比。
Lexical (Meta 开源):高性能、模块化、适合复杂应用,但生态仍在发展中。
ProseMirror :功能强大、灵活,但 API 复杂,入门门槛较高。
Slate :React 友好,完全可定制,但文档有限,维护情况不稳定。
Tiptap (基于 ProseMirror):提供更简洁的 API 和更好的 TypeScript 支持,适合现代 Web 应用。
Quill :易用,适合基本需求,但扩展性受限。
结论: 如果你需要高扩展性和现代化 API,Lexical Tiptap 是更好的选择;如果追求稳定和成熟方案, ProseMirror 仍然值得考虑。


via
#阮一峰的科技周刊 337
 
 
Back to Top