据我了解,您所有的JavaScript都合并为1个文件。默认情况下,Rails在添加//= require_tree .到application.js清单文件的底部时会执行此操作。
//= require_tree .
application.js
这听起来像是真正的救命稻草,但是我有点担心页面特定的JavaScript代码。此代码是否在每个页面上执行?我想要的最后一件事是,当只在一页上需要所有对象时,将为每页实例化我的所有对象。
此外,代码是否也可能发生冲突?
还是script在页面底部放置一个小的标签,该标签只是调用执行该页面javascript代码的方法?
script
然后,您不再需要require.js吗?
谢谢
编辑 :我感谢所有的答案…,我认为他们并没有真正解决问题。其中一些是关于样式的,似乎没有关系…而其他人只是提到javascript_include_tag…,我知道确实存在(显然…),但是看来Rails 3.1的发展方向是将所有内容都总结起来。您的JavaScript合并为1个文件,而不是在每个页面的底部加载单个JavaScript。
javascript_include_tag
我能想到的最好的解决方案是div使用ids或classes 将某些功能包装在标签中。在JavaScript代码中,您只需检查页面上的id或class是否存在,如果是,则运行与其关联的JavaScript代码。这样,如果动态元素不在页面上,则JavaScript代码将不会运行- 即使application.jsSprockets打包的海量文件中也包含了该代码。
div
id
class
我上面的解决方案的好处是,如果搜索框包含在100个页面中的8个页面中,它将仅在这8个页面上运行。您也不必在网站的8个页面中包含相同的代码。实际上,您无需再在网站上的任何位置添加手动脚本标记。
我认为这是对我问题的实际答案。
我很感谢所有答案…而且我认为他们并没有真正解决问题。其中一些是关于样式的,似乎没有关系…而其他人只是提到javascript_include_tag…,我知道确实存在(显然…),但是看来Rails 3.1的发展方向是将所有内容都总结起来。将您的Javascript分成1个文件,而不是在每个页面的底部加载单个Javascript。
我能想到的最好的解决方案是div使用ids或classes 将某些功能包装在标签中。在javascript代码中。然后,您只需检查页面上的id或class是否存在,如果是,则运行与其关联的javascript代码。这样,如果动态元素不在页面上,则JavaScript代码不会运行- 即使application.jsSprockets打包的海量文件中也包含了JavaScript代码。
我上面的解决方案的好处是,如果搜索框包含在100个页面中的8个页面中,它将仅在这8个页面上运行。您也不必在网站的8个页面中包含相同的代码。实际上,您无需再在网站上的任何位置添加手动脚本标签- 只需预先加载数据即可。