3

我的 Rails javascripts 目录中有几个 javascript(咖啡脚本)文件。代码在逻辑上分为不同的文件。但是,每个文件都以某些文件开头,$(document).ready ->并且某些文件共享通用的帮助函数。

分解辅助函数的最佳方法是什么?我是否应该将它们全部放在 application.js 中较早包含的其他文件中?

另外,按照我的方式划分代码是否正常,每个页面都在哪里$(document).ready ->?这是否意味着我的所有代码在每个页面上都被调用,无论它是否相关?这个组织有其他选择吗?

我不确定这个问题是特定于 Rails 还是与一般的 javascript 和 jQuery 相关。

4

1 回答 1

2

我确实认为这是一个 Rails 问题,而且是一个很好的问题。

Rails 中的正常范例,其中“全局”的东西进入application.*了资产管道有点混乱,因为 application.js 真的充当清单,而不是公共文件。当然你可以在那里添加东西,甚至application.js.coffee为你的通用代码创建一个。我决定创建一个名为common.js.coffee(在另一种情况下shared.js.coffee为 )的文件,在我的情况下,该文件由require_tree .指令自动处理。

(根据@jonathan-tran 的评论更新)在某些情况下,您可能只希望在文档上调用的方法为所有页面准备好——例如,我使用它来使日期选择器可用于任何视图中的任何字段。相反,如果您希望方法(实际上是全局函数)可调用,则需要将咖啡脚本函数导出到变量,例如通过附加到window对象。您可以在共享文件中执行这两项操作。

$(document).ready ->确实,如果您使用生成器,您最终会得到每个控制器的文件,如果没有专门的代码,则会在编译资产时导致一系列冗余语句。因此,只需摆脱您不使用的那些。但是遵循分离特定于页面的功能的模式对我来说很有意义并且效果很好——我知道在哪里可以找到东西,随着项目的发展,这很有价值。

我在 Rails 中学到的另一条规则:顺其自然。如果这就是 Rails 的做法,那可能是一个好方法。他们确实考虑过这些事情。不要修复有效的方法:-)

于 2012-11-28T02:17:12.317 回答