别是他们已经摆脱了虚拟 DOM。他们可能会放弃一两个方法。但总的来说,在处理代码的方式上,它们是相同的方法和相同类型的 API,而且它们要小得多。 克里斯:我认为我们使用的许多工具对于我们想要做的事情来说可能过于强大。如果您需要基于状态的 UI 并且需要反应性数据和这些动态界面,那就太好了。我认为我今天尝试谈论的最重要的事情之一不是……永远不要使用工具。对我来说,Vanilla JS 并不是你手写的每一行代码和你所做的每个项目。这太疯狂了。我不能那样做,我不那样做。但它对我们使用的工具更具选择性。我们总是选择多功能工具,瑞士军刀,里面有所有这些东西。有时,您真正需要的只是一把剪刀。您不需要所有其他东西,但无论如何我们都有。 克里斯:很抱歉,要回答你的问题还有很长的路要走。
有它的代码量比您自己可以或
想要编写的代码量要多,但它并没有我认为我们认为需要的那么多。当我说你不需要框架时,我得到了很多关于这个想法的反对,“好吧,如果你不使用框架,那么你基本上是在编写自己的框架。” 那么这就带来了它自己的问题。我认为在使用 React 或 Vue 和编写自己的框架之间存在一个位置,并且 巴拿马手机号码列表 可能会选择更小的东西。有时,根据您想要做什么,编写自己的框架实际上可能是正确的选择。这一切都非常不稳定和主观。 德鲁:非常有趣的是,作为学习练习,您实现了自己的基于状态的框架。我记得过去,我曾经认为每次我伸手去图书馆或其他东西时,我喜欢认为我可以自己实现它。 克里斯:一定一定。 德鲁:但去图书馆让我省去了这样做的麻烦。我知道如果我必须自己编写这段代码,我知道我会采取什么方法来完成它。一直到使用 jQuery 之类的东西都是如此。如今,我想如果我必须编写自己的 Vue 或 React 版本,我几乎不知道该库中所有代码中现在发生了什么。 德鲁:对于我们这些不熟悉的人来说,当你说像 Preact 放弃虚拟 DOM 并使一切变得更小这样的东西时,虚拟 DOM 给我们带来了什么? 克里斯:为了回答这个问题,我想稍微退一步。
框架和其他基于状态的库为您提供
的最好的东西之一就是 DOM diffing。如果您并没有真正更新 UI 太多,您可以这样说:“这是标记应该是什么样子的字符串。在 HTML 中,我将把所有这些标记放在这个元素中。” 当你需要改变某件事时,你会再做一次。这对于浏览器来说有点昂贵,因为它会触发重绘。 克里斯:但我认为可能 传真列表 比这更重要的是,这样做的问题之一是你在那里有任何类型的交互元素,一个表单字段,一个某人关注的链接。焦点丢失了,因为元素……即使你有一个看起来相似的新东西,它也不是相同的文字元素。因此,如果焦点丢失,可能会给使用屏幕阅读器的人带来混乱。这有一大堆问题。 克里斯:任何有价值的基于状态的 UI 事物都将实现一些 DOM 比较,他们说,“这就是 UI 应该是什么样子的。这是 DOM 中现在的样子。有什么不同?它将去改变这些事情。它实际上正在做您自己手动更新 UI 所需要做的事情,但它是在幕后为您做的。