[译] 工具和开发者习惯

175 阅读4分钟

原文链接:Tools and developer habits,by Chris Ferdinandi

Photo by JOSHUA COLEMAN on Unplash

我对现在广泛使用的框架和库最大的担心是,让开发者养成不好的习惯(特别是对下一代开发者)。

我深入说明下。

框架世界的事件处理

最近,我学到 React 是如何处理绑定到元素上的 on* 事件的,底层是利用了 事件委托

举一个例子:

<button onclick={addTask}>Add</button>

JSX 最终的编译结果类似下面的代码(我不用 React,所以我不确定确切的输出):

<button data-onclick="addTask">Add</button>

<script>
	document.addEventListener(click, function (event) {
		if (event.target.matches('[data-onclick="addTask"]')) {
			addTask(event.target);
		}
	});
</script>

React 的支持者会告诉你这对开发者来说是件好事。就像 Justin Makeig 对我说得一样

关键的是,你只要告诉框架要表达的 UI 意图,它会帮你处理好实际 DOM 的。

我完全理解。

如果您要使用 JavaScript 创建 UI,那么在该元素上查看与该元素相关的事件会很有帮助。

但是,以 React 为主要框架(这个约定也出现在 VueJS 中),这也影响人们在 没有 框架的情况时如何构建。

我已经看到在 HTML 上直接包含 onclick(和其他 on*)属性的原生 JS 代码的增长,因为这是新开发者学习的事件处理的“标准约定”。

我们正在倒退

我们不是学习在最佳实践,而是教开发人员做最简单的事情,让框架为其处理所有麻烦的事情。

这就是许多开发人员所称的“良好的抽象”。

但这也意味着开发者在没有工具的情况下会束手无策,并且无法识别工具何时做了错事。

我们正在破坏 Web


我在可访问性环境中看到过很多。

一些 React 的拥趸提出的一个论点是,通过将可访问性自动化到我们使用的组件中,再通过框架使用这些组件让 Web 易于访问。但这并不是实际发生的情况。

去年,WebAIM 对 Web 上的前百万个站点进行调查。他们发现,使用框架的网站 有可能出现可访问性问题,而不是很少可能。

如果一个流行的组件不是以可访问地方式构建的,会发生什么呢?

那些被告知让框架来处理它的人并不知道有些地方出了问题。我们让 Web 变得更糟了。

你意思我们永远不该使用工具?

当然不是!但重要的是,要了解你的工具是做 什么 的,以及它们是 如何 工作的。

我发现有两种开发者,会觉得工具非常重要:

  • 初学者,工具让人困惑的事情变得更易解决。
  • 经验丰富的开发人员,理解了所使用的工具的好处和约束,知道如何使用它们来更有效率地工作。

学习惯性很重要。使初学者从“我什么都不知道”到“我做了一件东西!”的工具真的很重要(我认为 React 不是 那种工具)。

对于经验丰富的开发着而言,工具可以帮助他更快地行动。 如果你知道自己在做什么,即可以解决工具的限制。

但很多时候,开发者会跳过从 1 到 2 之间的桥梁:学习基础知识。

了解你的技艺

您必须先了解原生 JS 的工作原理,才能了解 React 的工作原理。除非你了可访问性(accessibility)的工作原理,否则您将无法确定组件是否真正可访问(不管标签上内容是什么)。

除非您了解网络性能的工作原理,否则你不知道这个工具是否真的可以使我们的应用程序获得更高性能。

好的抽象很棒。但是,它们的功能仅与使用它们的人一样强大。

一旦你通过了初级阶段,就必须走出工具繁重的开发并学习基础知识,Web 的健康发展取决于此。

(完)