【发布时间】:2012-01-19 05:43:25
【问题描述】:
我一直在研究这个:
Using Rails 3.1, where do you put your "page specific" javascript code?
但我还没有看到满意的答案,这也让我怀疑我是否做错了什么。
这是我的心智模型:对于不同的观点,我会有不同的看法
$(document).ready(....)
块,显然引用了特定于该页面的元素。我不想通过为每个页面加载该代码并以某种方式试图弄清楚如何仅在特定页面上执行它来污染事物;这看起来很丑。
我的直觉,诚然没有任何初步实验的支持,是理想的事情是:
- 从 application.js 加载应用程序范围的代码。
- 从 assets/controller_name/shared.js 之类的文件中加载共享控制器代码
- 从 assets/controller_name/show.js 之类的文件中加载特定于视图的代码
在我的脑海中。助手将在第一次运行时检查文件是否存在,如果存在,则为其执行 javascript_include。
与“让我们将整个东西包裹在一个大粘性球中并全部发送”的方法相比,这可能存在一些性能问题,但似乎是划分代码的更好方法。
但是,如上所述,我觉得我错过了一些东西。 $(document).ready 在每页的基础上是一个坏主意吗?是否应该只在模板中并从 application.js 调用页面特定的 JS 位?上面的链接文章得出了这个结论,但我不喜欢我脑海中出现的一个巨大的 $(document) 的图像。如果这个,如果那个,如果另一个,我已经准备好了。
【问题讨论】:
-
我们已经发布了一个 gem 来解决这个问题,查看博文eng.wolox.com.ar/blog/2013/04/19/introducing-loadjs
标签: javascript ruby-on-rails ruby-on-rails-3.1 unobtrusive-javascript