## 使用原生 JavaScript 实现声明式 UI:总结 本文探讨了仅使用原生 JavaScript、Web API 和 `Proxy` 对象构建响应式、声明式 UI,从而绕过传统的 UI 框架。该实验侧重于一个实际场景:显示一个模态对话框,该对话框会定期轮询 API,直到满足特定条件。 核心原则是将 UI *应该做什么* 与 *如何实现* 分离开来。这通过一个用于元素创建的 **DOM 工具层**、一个用于跟踪更改而无需外部库的基于 **Proxy 的响应式状态** 系统,以及一个可重用的 **轮询逻辑** 抽象来实现。然后,**模态编排器** 将这些组件集成在一起。 示例展示了一个用于显示轮询对话框的简洁、声明式 API,其中消费者定义端点、成功标准、内容和回调函数——而不是底层实现细节。主要收获包括声明式方法的扩展性、原生 Web API 的强大功能以及可重用工具的优势。 该实验得出结论,虽然框架提供了便利性,但通过精心使用原生 JavaScript 可以实现声明式行为和响应式,强调无论使用何种工具,抽象的重要性。
## XMPP 与元数据:摘要
本次演讲最初在混沌通信大会上发表,探讨了 XMPP 消息协议中的元数据问题。虽然 XMPP 提供了可扩展性和联合,但即使使用端到端加密 (E2EE),每条消息的发送都会向相关服务器泄露信息——发送者、接收者和时间。信任您的服务器至关重要,因为服务器被攻破会暴露所有元数据。
演讲概述了四种主要的元数据威胁:服务器被攻破、实时数据关联、利用静态服务器数据以及网络层面的观察。讨论了几种潜在的解决方案,包括无服务器消息传递 (XEP-0174),它绕过了服务器但牺牲了加密,以及 XTLS,用于直接、加密的客户端到客户端连接。加密身份 (XEP-0416) 提供了另一种减少对服务器信任的途径。
将 XMPP 与其他协议进行了比较:Signal 虽然在密码学上很强大,但它是中心化的并收集元数据;Matrix 在服务器之间复制数据,加剧了元数据问题;SimpleX 优先考虑隐私,内置了密码学和洋葱路由。
最终,改进 XMPP 的元数据处理需要持续的努力,尽管资源有限。虽然采用可能缓慢,但增量改进可以加强协议和生态系统。
## Lightpanda 新的基于 Zig 的 DOM:zigdom
Lightpanda 发现 V8、Zig 和 LibDOM 之间存在摩擦,尤其是在事件、自定义元素和 ShadowDOM 方面,因此用自定义的基于 Zig 的解决方案 `zigdom` 替换了之前的 DOM 实现 (LibDOM)。 这个为期六个月的项目旨在创建一个更精简、更可控的代码库,简化未来的扩展和改进。
`zigdom` 使用基于指针的节点结构和大型分配来最大程度地减少内存开销,并采用延迟加载元素属性以进一步降低内存使用量。他们集成了基于 Rust 的 `html5ever` 解析器,用于强大的 HTML 处理,并实现了 V8 快照以显著缩短启动时间。
虽然性能提升个位数,但主要好处是统一的代码库,可以更好地控制内存管理和事件处理。 这个基础将促进多线程和改进的自定义元素/ShadowDOM 支持等功能。 开发过程得到了 AI 编码代理 (Claude) 的帮助,证明对于 DOM 实现这样定义明确的任务非常有效,但仍然需要彻底的代码审查。 `zigdom` 现在已集成到 Lightpanda 的主分支中。