使用 jQuery 或其他东西来构建用户界面和其他东西。然后框架出现了,它们给了我们更多基于状态的 UI 的概念。
克里斯:是的。
德鲁:现在,这是一个相当复杂的工程,您需要将其落实到位。使用较少的 JavaScript 是否会排除使用类似的东西,或者您必须自己重新实现它?您只是创建一个加载的样板吗?
克里斯:这很大程度上取决于你在做什么。如果 牙买加手机号码列表 你有一个不变的界面,你可以用……我不知道,也许十几行代码来构建一个基于状态的 UI。如果你有一个不变的界面,老实说我可能会说基于状态的 UI。这不一定是正确的方法。您可能还可以做其他事情。想想静态站点生成器、一些预渲染的标记,甚至是老式的 WordPress 或 PHP 驱动的站点。
克里斯:但当您进入更加动态和交互式的界面时,这一切就开始变得有趣了。不仅仅是应用程序。我知道人们喜欢在网站和应用程序之间划清界限,我认为它们两者之间存在着这种奇怪的混合,而且界限并不总是那么清晰。当你开始更多地关注用户做的事情时,事情就会发生变化。基于状态的 UI 变得更加重要。但您仍然不需要大量代码来实现这一点。
克里斯:我关注像 React 或 Vue 这样的东西,它们绝对是令人惊叹的工程作品。我不想剥夺从事这些工作的人的权利。我最终作为一个学习练习,构建了自己的迷你框架,只是为了更好地了解这些东西在幕后是如何工作的。确实很难解释所有不同的移动部分。因此,我非常尊重构建和使用这些工具的人们。但 React 和 Vue 在缩小和 gzip 压缩后都约为 30 KB。所以一旦你打开它们的包装,它们就会比这个大得多。
克里斯:不是全部,但其中很大一部分都投入到了称为虚拟 DOM 的东西上。有一些替代方案使用类似的 API 或方法。对于 React,您有 Preact,它是 2.5 KB 或大约 3 KB,而不是 30。它的大小只有十分之一。对于 Vue,您可以使用 Alpine JS,大约 7 KB。尽管如此,还是小得多。这些和他们的老大哥同行之间的最大区别是他们已经摆脱了虚拟 DOM。他们可能会放弃一两个方法。但总的来说,在处理代码的方式上,它们是相同的方法和相同类型的 API,而且它们要小得多。

克里斯:我认为我们使用的许多工具对于我们想要做的事情来说可能过于强大。如果您需要基于状态的 UI 并且需要反应性数据和这些动态界面,那就太好了。我认为我今天尝试谈论的最重要的事情之一不是……永远不要使用工具。对我来说,Vanilla JS 并不是你手写的每一行代码和你所做的每个项目。这太疯狂了。我不能那样做,我不那样做。但它对我们使用的工具更具选择性。我们总是选择多功能工具,瑞士军刀,里面有所有这些东西。有时,您真正需要的只是一把剪刀。您不需要所有其他东西,但无论如何我们都有。
克里斯:很抱歉,要回答你的问题还有很长的路要走。有时,它的代码量比您自己可以或想要编写的代码量要多,但它并没有我认为我们认为需要的那么多。当我说你不需要框架时,我得到了很多关于这个想法的反对,“好吧,如果你不使用框架,那么你基本上是在编写自己的框架。” 那么这就带来了它自己的问题。我认为在使用 React 或 Vue 和编写自己的框架之间存在一个位置,并且可能会选择更小的东西。