… 这是 React 组件首次以单文件格式并带有明确约定进行表达。
这就是 RedwoodJS 的 Cells 概念。在我看来,它感觉像是 Apollo 希望您 使用 useQuery 进行操作 的稍微更简洁的版本。Shawn 也建立了这种联系,并且我知道 RedwoodJS 使用 Apollo,所以我认为这是一种很好的语义糖。
RedwoodJS 中有很多很酷的东西。“一个高度 opinionated 的栈”,如果这样想的话,但 Tom 在 我们上一期 ShopTalk 中 明确表示它 *不像 Rails*。并不是说 Rails 不好(它很好),而是这个新世界可以用新的、更好的方式来做事情,从而创造出长期健康的软件。
什么是单文件组件?难道这不是多年来我们一直认为是不良实践的东西吗?
不完全是
好吧,人们一直说您必须将组件的不同部分分成单独的文件(HTML、CSS、JS),但在最近几年,随着框架的蓬勃发展,组件成为主要的 UI 构建块,因此并不总是需要为了拆分而拆分。将所有 HTML、CSS 和 JS 保留在一个文件中可能更好,因为它们都与同一个组件相关联。如果您需要处理一个组件,则无需在编辑器中打开 3 个不同的文件,您只需打开一个文件即可进行处理。这在 React 中随着 CSS-in-JS 样式方法的兴起变得尤其流行。例如,Vue 在其单文件组件方法中内置了此功能,其中 HTML、JS 逻辑和 CSS 样式都位于同一个文件中。
但最终它也确实取决于您认为哪种方法是最佳方法,当然,如果框架没有“强制”采用某种方法的话。
Vue 使用 SFC。我已经使用它们两年了。如果您来自 UI 背景,我认为它是开始学习 js 框架的最佳且最简单的框架之一。
我认为我们经常忘记这些是指南而不是法律。只要我们可以解释,并且机器仍然可以保持性能,我们就必须以我们理解并对我们有意义的方式去做。
等等。我是不是错过了什么?我一直都在编写 React,Gatsby、Next 和 create react app。我的 css jsx 和 react 始终在一个文件中。通常使用 styled components 进行 CSS 样式。
虽然没有使用过 React,但对于一般用途的 HTML 和 CSS 作为文件,.sass 可以满足构建“大”想法的一部分,尽管转换是应用程序浏览器通过 CPU 功能处于劣势的地方。
这仍然需要使用 CSS-in-JS 进行样式设置,因此与 React 中现有的功能相比,并不是真正的升级。
根据我的经验,唯一能够正确做到这一点的框架是 Vue 和 Svelte,因为它们允许您编写实际的 CSS 或 SCSS,而不是 CSS-in-JS 那种噩梦。