at.*_*at. 5 javascript ruby-on-rails coffeescript ruby-on-rails-3 ruby-on-rails-3.2
我正在使用Rails 3.2.9.当我将CoffeeScript代码添加到.js.coffee目录中的/app/assets/javascripts文件时,我会在所有网页中获得生成的JavaScript.问题是所有的JavaScript都包含在:
(function() {
// my code
}).call(this);
Run Code Online (Sandbox Code Playgroud)
因此,我定义的任何方法在我在其他文件中编写的任何其他CoffeeScript代码中都不可见.使用Rails编写一组可重用的CoffeeScript类和方法的正确方法是什么?
最简单的方法是命名所有类.如果你的应用程序被称为"app",那么在你的初始化代码之前发生任何事情:
// Set up the namespace.
window.app = { }
Run Code Online (Sandbox Code Playgroud)
然后在你的所有.coffee文件中:
class app.Pancakes
#...
Run Code Online (Sandbox Code Playgroud)
然后你将拥有一个全局命名空间,并通过该命名空间引用所有内容:
pancakes = new app.Pancakes
Run Code Online (Sandbox Code Playgroud)
同样对于简单的功能:
app.where_is = (pancakes, house) -> ...
# And elsewhere...
x = app.where_is(...)
Run Code Online (Sandbox Code Playgroud)
设置和部分隐藏命名空间有多种方法,但它们都是上面的变体,简单的命名空间与Rails资产管道很好地配合.
| 归档时间: |
|
| 查看次数: |
1601 次 |
| 最近记录: |