只执行代码的特定部分
我遇到了类似的问题,但不是在rails中,而是在asp.net中。
这个 javascript 解决方案应该可以在任何地方工作:
http://paulirish.com/2009/markup-based-unobtrusive-comprehensive-dom-ready-execution/
这基本上是基于 DOM 的路由之母。您将属性赋予指定您所在位置的 body 标记。通读一遍,它非常简单且实用。
基于 DOM 的路由现在非常流行,并且已经在很多框架中实现(我很确定 rails 有它自己的解决方案),但是这个简单的版本可以在任何地方轻松实现。
该帖子中还有一些后续链接,您也应该阅读它们并确定最适合您的链接。
捆绑脚本
在 JavaScript 中“您编写/调试的内容就是您发布的内容”是一种误解:
由于它是一种在客户端解释的脚本语言,您可以直接通过网络发送它而无需任何处理,但这会导致不必要的大文件和大量单独的请求:每个文件一个请求。因此,您可以从中删除所有注释/空格并将所有代码放入一个文件中,但这会导致代码无法维护。您可能认为这是一个必要的权衡,但事实并非如此!
您可以“构建”将它们捆绑在一起的 javascript 文件,并将它们的内容缩小到更小的大小。它有很多工具,我相信 rails 有它自己的解决方案(在你最喜欢的搜索提供商上搜索捆绑 javascript)。您可以在测试环境中使用未捆绑/未缩小的代码,因此开发和调试非常容易。当您需要将其发布到生产环境时,您可以捆绑您的脚本。
然后,您可以在不同的文件中定义对象/函数,例如:
文件1:
var FOO = {
};
文件2:
FOO.common = {
init : function(){ ... },
finalize : function(){ ... }
};
文件3:
FOO.shopping = {
init : function(){ ... },
cart : function(){ ... },
category : function(){ ... }
};
这样,您基本上可以获得与 1 个文件相同的结果,而且在设计应用程序时阅读起来也更清晰一些。
编辑:此解决方案使用 jQuery 的$(document).ready()
功能。如果这是不可取的,您还可以将其连接到任何其他就绪事件。