在 Rails 中命名 React 组件文件时,前导下划线有什么区别?

What difference does the leading underscore make when naming React component files in Rails?

我刚开始在 Rails 中使用 React

当我遇到其他 Rails 应用程序 React 时,我发现其中一些应用程序在 /app/assets/javascripts/components/ 中命名 *.js.* 文件时添加了前导下划线。
例如Sample React Rails App

组件文件如下:

_comment.js.jsx

虽然有些人没有, 例如Account React Rails App

组件文件如下:

record.js.coffee

那么添加前导下划线有什么区别呢?

我知道在 Rails 视图中,用前导下划线命名 *.html.erb 文件意味着它是一个可以重复使用的部分,我们调用 render 方法来呈现它。但是这里 components.js//= require_tree ./components 需要 *.js.* 文件。因此,即使您删除下划线,也没有任何区别。我相信这是 "reuse" 组件的唯一部分。

因为 application.js 中有 //= require_tree ./components。我认为用前导下划线命名它们真的没有任何区别。

然后我认为可能与 Rails 资产管道 有关,因为实际上 component 文件在 sample-react-rails-app。下划线可能是为了在预编译时避免重复。

我已经尝试删除这些文件中的前导下划线和 运行 本地应用程序(我也在开发环境中进行资产管道预编译)。事实证明,即使您删除了前导下划线,这些文件的预编译仍然不会被复制,应用程序工作正常。事实上,asset pipeline 只会包含同一个文件一次,即使您重复 require 文件也是如此。

总而言之,前导下划线 对您的应用的运行方式没有任何影响。这可能是遵循 partial 命名的命名约定,如 Rails viewsSASS compilation[= Rails Issues #3094 中也提到了 31=]。一般来说,我认为这个惯例值得遵循,告诉你自己和你的团队这些文件作为不完整的部分工作。