繁体   English   中英

Rails 4 / Sprockets:特定于控制器的JavaScript随处可用?

[英]Rails 4 / Sprockets: controller-specific JavaScripts are available everywhere?

我正在运行Rails 4.2.4,并在创建控制器auth时自动创建app/assets/javascripts/auth.js 它告诉我:

//在此处放置与匹配控制器相关的所有行为和挂钩。 //所有这些逻辑将自动在application.js中可用。

很好,但是由于application.js清单包含//require_tree . ,我添加到app/assets/javascripts文件夹中的任何文件将对任何控制器可用。

我的印象是,这些文件是特定于一个控制器的,不会在其他地方显示,而是在AuthController页面上AuthController

我是否在这里遗漏了一些东西,或者是设计使然,仅仅是为了组织工作流程而已,仅此而已?

正确地说,对于您所描述的情况,您放置在app/assets/javascripts/auth.js所有javascript都可用于使用application.js清单的任何视图,而不仅仅是AuthController呈现的AuthController

这是设计使然,可能会引起误解。 如何在Rails框架内组织javascript是一个经常被争论且没有一致约定的热点话题。

将javascript拆分为与其余应用程序代码匹配的文件/目录结构的想法只是一种方便的措施,可以帮助您知道在哪里寻找或放置javascript的地方。 在Rails 4之前,视图帮助器模块处于类似状态-它们的文件名与相应的视图和控制器匹配,但是方法本身在整个应用程序中都可用(默认情况下)。

就是说,仅仅因为Rails不会对javascript范围施加限制,并不意味着您不应该遵循约定并手动执行约定。 将您的应用程序清单分解为多个控制器清单或在布局中放入erb逻辑可以帮助实现此目的。

就像我说的那样,这是一个热门话题,因此,如果您对如何在Rails中组织javascript进行一点点谷歌搜索,就会发现大量带有明确建议的博客。 这是一个不错的例子:

http://brandonhilkert.com/blog/organizing-javascript-in-rails-application-with-turbolinks/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM