gpt4 book ai didi

Angular 变化检测与 Svelte 变化检测

转载 作者:行者123 更新时间:2023-12-04 07:55:36 25 4
gpt4 key购买 nike

我在日常工作中使用 Angular,同时也在学习 Svelte。我知道 Angular 或 Svelte 都没有使用虚拟 dom 和 diffing。我知道两者都有其他变化检测机制,而且,根据我的研究,它们看起来很相似。有人可以向我解释每种方法的独特之处以及 Angular 和 Svelte 的变化检测机制有何不同吗?

最佳答案

免责声明:我不太了解 Angular 和 Svelte 的内部工作原理,所以请保留我的回答。
Angular 中的变更检测是通过某种形式的脏检查完成的。每次 Angular 被告知这样做时都会运行一次检查。在通过使用 Zone.js 实现的普通 Angular 项目中它修补了所有可能的事件源,例如 setInterval或 DOM 事件监听器。当补丁事件触发时,Angular 会触发变更检测。然后将 Angular 感兴趣的每个变量与之前的状态进行比较,如果它们不同,则重新渲染内容。 This blog post更详细地解释了这个概念。
Svelte 不做脏检查,而是在编译时分析每个可能触发重绘的变量,并用 $$invalidate 包装赋值。调用。所以foo = 'bar'变成 $$invalidate(.., foo = "bar"); (侧面节点:这就是为什么像 array.push(item) 这样的东西不会触发 - 没有赋值 - 这是新 Svelte 开发人员的常见困惑)。所有变量失效的地方都将在下一个浏览器滴答中重新绘制。

关于 Angular 变化检测与 Svelte 变化检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66725886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com