的第一个使用 Redux 的 React 项目完全相同。我认为,正如任何此类技术在年轻时的本质一样,它们的迭代速度非常快,并且在某个时刻的最佳实践,6 个月后已经发生变化,并且有一种不同的做事方式。当您拥有跨越多年的代码库时,有时您可以在其中采用不同的实现方式。它并不总是保持同步。当然,如果您正在遵循教程或其他学习内容,您正在阅读书籍,您正在使用资源,那么它们将是如何做事的最现代版本。这并不一定与您在查看现有的成熟产品时所看到的一样。这是您曾经经历过的事情吗?或者您是否设法使您的代码库真正保持最新状态?
米娜:我想这肯定是我经历过的事情。当我尝试自己学 土耳其 WhatsApp 号码列表 习如何做 React 时,我查看了各种教程和类似的东西。我注意到,或者至少有人告诉我,那些曾经和我一起工作过的人,我们所做的一些事情或者是反模式,或者不完全是现在的工作方式,因为这个代码库有点,嗯成熟的我们相对来说,不过是几岁而已。因此,我认为有些方法比我们目前的方法更容易做事,因为这是几年前写的。因此,这有点像跑步机,试图跟上当前时代的步伐,并确保我想要以最好的方式做事,但我也不想破坏已建立的代码库,因为我想尝试一些东西。
德鲁:显然,像你和我这样的人正在关注 React 的事情之一,它可能会感觉有点不和谐,就像 JSX 的整个事情一样。你的项目中使用 JSX 吗?
米娜:我们是。我正在使用 JSX。
德鲁:你对此平静了吗?
米娜:每当我打开其中一个文件时,我就像我的一小部分死去了一样。将 HTML 放入 JavaScript 文件中仍然感觉有点亵渎。我知道这是一种革命性的做法,也是重点,但我只是觉得自己在 JavaScript 文件中编写标记。我已经接受了,但每次我这样做时,我都会想,“……”分离问题,这是一件事。我想要它回来,拜托。
德鲁:这是一个有效的观点,不是吗?当我开始更认真地使用 JavaScript 时,我的背景可能是当我回到雅虎时,事情很大程度上是基于服务器渲染 HTML 页面的模型,然后采用渐进增强方法,在顶部分层 JavaScript 来增强界面。如果界面中某些内容的状态需要更改,您的代码必须了解需要更新的界面的所有部分,这显然会导致您采用与这些大的整体视图紧密耦合的方法,您在这些视图中编写代码需要了解它周围的所有其他代码。我想这并不真正适合您在使用模式库或设计系统时采用的组件化方法,这更适合您的特定专业领域。我想,React 更适合这种方法,不是吗?
米娜:我认为确实如此,尤其是能够将非常具体的 CSS 耦合到一个 JSX 或一个 React 组件。这样一来,就可以更轻松地分离或仅获取库所需的内容,而保留其余部分,而模式库或设计系统则尝试仅使用一个大样式 CSS 文件或类似文件来完成更单一的操作,这确实让事情变得非常困难。你要么要么全盘接受,要么全盘皆输。因此,我确实很欣赏 React 允许我们进行更个性化、更组件化的开发方式,即使我仍然希望有一种方法可以真正将我的表示层和我的内容层与我的交互层分开。但也许这只是我在这个意义上有点老派。
德鲁:我确实感受到了那里的痛苦。我的想法是,如果我错了,请过来纠正我,我的理解是,它不是分离技术、CSS、JavaScript 和 HTML,而是分离功能。所以所有作为一个组成部分的东西都一起存在——
米娜:是的。
德鲁:...我认为如果不再需要该组件,这会很有用。您只需将其删除即可,它就会消失,并且不会在您的应用程序中留下痕迹。但 CSS 的情况并非总是如此。你如何将 CSS 与 React 结合使用?您是否看过诸如样式组件之类的东西?

米娜:不,我们没有。我听说过样式组件,但说实话,我从未真正彻底地研究过它们。因此,我们在 React 中使用 CSS 的方式是编写 Less,我们只需将一个 Less 文件附加到导入到该组件中的每个单独组件上。然后它通过 Webpack 绑定并提供给客户端。
德鲁:你是否使用像 BEM 这样的系统或其他东西来转换命名空间?
米娜:是的。我们使用 BEM 进行命名空间,尽管对它的遵守程度根据谁写什么而有所不同。但我们尝试使用 BEM 命名空间模式来使每个单独的类和组件的用途更加清晰。