一尘不染

使用Rails 3.1,您将“特定于页面的” JavaScript代码放在哪里?

javascript

据我了解,您所有的JavaScript都合并为1个文件。默认情况下,Rails在添加//= require_tree .application.js清单文件的底部时会执行此操作。

这听起来像是真正的救命稻草,但是我有点担心页面特定的JavaScript代码。此代码是否在每个页面上执行?我想要的最后一件事是,当只在一页上需要所有对象时,将为每页实例化我的所有对象。

此外,代码是否也可能发生冲突?

还是script在页面底部放置一个小的标签,该标签只是调用执行该页面javascript代码的方法?

然后,您不再需要require.js吗?

谢谢

编辑
:我感谢所有的答案…,我认为他们并没有真正解决问题。其中一些是关于样式的,似乎没有关系…而其他人只是提到javascript_include_tag…,我知道确实存在(显然…),但是看来Rails
3.1的发展方向是将所有内容都总结起来。您的JavaScript合并为1个文件,而不是在每个页面的底部加载单个JavaScript。

我能想到的最好的解决方案是div使用ids或classes
将某些功能包装在标签中。在JavaScript代码中,您只需检查页面上的idclass是否存在,如果是,则运行与其关联的JavaScript代码。这样,如果动态元素不在页面上,则JavaScript代码将不会运行-
即使application.jsSprockets打包的海量文件中也包含了该代码。

我上面的解决方案的好处是,如果搜索框包含在100个页面中的8个页面中,它将仅在这8个页面上运行。您也不必在网站的8个页面中包含相同的代码。实际上,您无需再在网站上的任何位置添加手动脚本标记。

我认为这是对我问题的实际答案。


阅读 203

收藏
2020-04-25

共1个答案

一尘不染

我很感谢所有答案…而且我认为他们并没有真正解决问题。其中一些是关于样式的,似乎没有关系…而其他人只是提到javascript_include_tag…,我知道确实存在(显然…),但是看来Rails
3.1的发展方向是将所有内容都总结起来。将您的Javascript分成1个文件,而不是在每个页面的底部加载单个Javascript。

我能想到的最好的解决方案是div使用ids或classes
将某些功能包装在标签中。在javascript代码中。然后,您只需检查页面上的idclass是否存在,如果是,则运行与其关联的javascript代码。这样,如果动态元素不在页面上,则JavaScript代码不会运行-
即使application.jsSprockets打包的海量文件中也包含了JavaScript代码。

我上面的解决方案的好处是,如果搜索框包含在100个页面中的8个页面中,它将仅在这8个页面上运行。您也不必在网站的8个页面中包含相同的代码。实际上,您无需再在网站上的任何位置添加手动脚本标签-
只需预先加载数据即可。

我认为这是对我问题的实际答案。

2020-04-25