javascript - 可用于 Rails 应用程序其余部分的一组 CoffeeScript/JavaScript 类和方法

标签 javascript ruby-on-rails ruby-on-rails-3 coffeescript ruby-on-rails-3.2

我正在使用 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/

相关文章:

ruby-on-rails - 目录 : How do I ensure only one object is assigned to my object?

ruby-on-rails - 为路由添加授权

ruby-on-rails - 无法加载 EventMachine C 扩展;使用纯 ruby react 器

ruby-on-rails - 深层嵌套资源 rails

javascript - 为什么链接需要在手机上双击才能进入链接?

javascript - 如何为我的分页添加格式

javascript - 如何在 backboneJS 事件中使用多个参数

ruby-on-rails - 在Rails应用程序中将CarrierWave与Amazon Elastic Transcoder一起使用

javascript - 为什么我的 do-while 循环不起作用? (函数内生成的多个变量)

ruby - Rails 测试显示 0% 全部通过时通过