我正在使用 Rails 3.2.9。当我将 CoffeeScript 代码添加到 /app/assets/javascripts
目录中的 .js.coffee
文件时,我在所有网页中都得到了生成的 JavaScript。问题是所有 JavaScript 都包含在:
(function() {
// my code
}).call(this);
所以我定义的任何方法在我在其他文件中编写的任何其他 CoffeeScript 代码中都是不可见的。使用 Rails 编写一组可重用的 CoffeeScript 类和方法的正确方法是什么?
最佳答案
最简单的做法是为所有类命名。如果您的应用程序被称为“app”,那么在您的初始化代码中,在任何其他事情发生之前:
// Set up the namespace.
window.app = { }
然后在所有的 .coffee
文件中:
class app.Pancakes
#...
然后您将拥有一个全局命名空间,并且您将通过该命名空间引用所有内容:
pancakes = new app.Pancakes
类似的简单函数:
app.where_is = (pancakes, house) -> ...
# And elsewhere...
x = app.where_is(...)
有多种设置和部分隐藏命名空间的方法,但它们都是上述方法的变体,简单的命名空间与 Rails Assets 管道配合得很好。
关于javascript - 可用于 Rails 应用程序其余部分的一组 CoffeeScript/JavaScript 类和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13392670/