1

我真的不喜欢在公用文件夹中有一个重复的目录结构来包含这里建议的 Javascript 模板。我要潜入一个项目。任何可以说服我不要将我所有的 JS 观点与我的其他观点相提并论的人,请提出不这样做的理由。我的想法:

无论您是使用 Backbone、Jammit 模板还是任何其他 Javascript 来创建数据视图,理想情况下,这些代码不应该位于 /app/views/[object] 目录中吗?如果我们正在设计一个具有多种表示数据的方式的应用程序,那么所有这些视图不应该都存在于同一个地方吗?

当然,设置路由并让 rails 为文件提供服务是没有意义的,但是如果我们使用 Jammit/Closure/其他 JS 压缩工具,那么我们已经在目录结构和 JS 之间添加了一层处理我们传输给客户。这不应该意味着我们可以将模板放在对代码组织/维护最有意义的地方吗?

谢谢。

4

1 回答 1

1

建议不要将 .js 文件放入其中的原因app/views/[object]是它们不是 Rails 应用程序的一部分。它们实际上是 Backbone 或 Jammit 应用程序/框架的一部分,因此它们不属于 app 目录。如果文件是 .js.erb 文件,那么它们应该在 app 目录中,但由于它们不属于该public/javascripts目录。

没有人阻止你这样做,但因为它们不是 .erb 模板文件,它们并不真正属于 app 目录。它们是公共的 .js 文件。它们不是核心 Rails 应用程序的一部分的原因是它们不以 .erb 结尾,它们独立运行,与控制器或 ruby​​ 类无关,如图像和 css 文件。

请记住,如果它们位于 /app/views 目录中,那么它们将必须通过 Rails 提供服务。换句话说,你必须有一个控制器来为它们服务,这给你的服务器增加了一些额外的复杂性和压力。更重要的是,如果他们不需要将 ruby​​ 数据从您的控制器传递到视图,那么您将拥有一些非常基本/无意义的控制器,它们仅提供静态数据。而且您可能必须将文件重命名为 .js.erb 以便它们可以通过这些控制器提供服务。如果文件是直接从公共目录提供的,这不是必需的,所以它更简单。

一个目录镜像另一个目录并没有错,这种情况经常发生,例如 RSpec spec/models、spec/views、spec/controllers。

于 2011-04-06T20:20:24.273 回答