ESC
开源 1 分钟阅读

Mador:用 80 行代码的 Proxy 状态元组让任意 DOM 实现响应式

开发者发布超轻量响应式库 Mador,仅 80 行代码,基于 Proxy 状态元组即可让任意 DOM 获得响应式能力。它不引入组件、模板或虚拟 DOM,直接作用于现有 DOM:通过 r(selector, update, read) 声明绑定,自动追踪依赖并按需更新;写入操作自动批处理,元素移除后自动清理,无需管理组件生命周期。

来源:Hacker News

import mador from “https://cdn.jsdelivr.net/npm/@marsbos/mador@latest/dist/mador.js";

const [r, w] = mador({ count: 1, });

r( “.counter”, (el, count) => { el.textContent = Count: ${count}; }, (state) => state.count, );

r( “.another-counter”, (el, count) => { el.textContent = count * 3; }, (state) => state.count, );

w((state) => { state.count++; });

这就是全部内容了。

没有组件、模板或虚拟 DOM。 Mador 直接作用于你已有的 DOM。

r(selector, update, read);

selector 用于选择需要更新的元素。

update 接收每个元素以及 read 返回的值。

read 用于选择该绑定所依赖的状态。

r( “.counter”, (el, count) => { el.textContent = count * 2; }, (state) => state.count, );

Mador 会追踪绑定中读取的属性,只有当这些依赖发生变化时才会重新运行该绑定。

w((state) => { state.count++; });

写入操作是批处理的,同一次写入中做出的多个更改会被一起处理。

“绑定”会与其所更新的 DOM 相关联。

当匹配的元素被移除后,Mador 可以清除对应的响应式运行器。

无需管理任何组件生命周期。