Rails3 views- JS模板目录结构

时间:2011-04-06 20:14:34

标签: javascript model-view-controller ruby-on-rails-3 backbone.js jammit

我真的不喜欢在公用文件夹中有一个重复的目录结构来包含Javascript模板,如建议here。我即将潜入一个项目。任何可以通过我的其他观点将我的所有JS视图都放在一边的人都可以告诉我,请不要这样做。我的想法:

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

设置路由并使用rails当然没有意义,但如果我们使用Jammit / Closure /另一个JS压缩工具,那么我们已经在我们的目录结构之间添加了一层处理以及我们传输给客户端的JS。这不是说我们可以将模板放在最适合代码组织/维护的地方吗?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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

一个目录镜像另一个目录没有任何问题,这种情况发生了很多,例如RSpec spec / models,spec / views,spec / controllers。