据我了解,您的所有 JavaScript 都合并到 1 个文件中。当 Rails 添加//= require_tree .
到application.js
清单文件的底部时,它默认执行此操作。
这听起来像一个真正的救星,但我有点担心特定于页面的 JavaScript 代码。这段代码会在每一页上执行吗?我想要的最后一件事是当我的所有对象只在一页上需要时,为每个页面实例化。
另外,代码是否也有可能发生冲突?
或者你是否script
在页面底部放置了一个小标签,它只是调用一个为页面执行 javascript 代码的方法?
那么你不再需要 require.js 了吗?
谢谢
编辑:我感谢所有的答案......我认为他们并没有真正解决问题。其中一些是关于样式的,似乎并不相关......而其他人只是提到javascript_include_tag
......我知道存在(显然......)但看起来Rails 3.1前进的方式是结束所有您的 JavaScript 到 1 个文件中,而不是在每个页面的底部加载单独的 JavaScript。
我能想到的最佳解决方案是div
用id
s 或class
es将某些功能包装在标签中。在 JavaScript 代码中,您只需检查id
或class
是否在页面上,如果是,则运行与其关联的 JavaScript 代码。这样,如果页面上没有动态元素,JavaScript 代码就不会运行——即使它包含在application.js
由 Sprockets 打包的海量文件中。
我的上述解决方案的好处是,如果搜索框包含在 100 页中的 8 页上,它将仅在这 8 页上运行。您也不必在网站的 8 个页面上包含相同的代码。事实上,您再也不必在您的网站上的任何地方包含手动脚本标签了。
我认为这是我问题的实际答案。