问题描述
我使用的是Rails 3.2.9。当我将CoffeeScript代码添加到 / app / assets / javascripts
目录中的 .js.coffee
文件时,在我的所有网页中生成的JavaScript。问题是所有的JavaScript包装:
I'm using Rails 3.2.9. When I add CoffeeScript code to a .js.coffee
file in the /app/assets/javascripts
directory, I get the resulting JavaScript in all of my webpages. The problem is all the JavaScript is wrapped in:
(function() {
// my code
}).call(this);
因此,我定义的任何方法在我在其他文件中写入的任何其他CoffeeScript代码中都不可见。
So any methods I define are not visible in any other CoffeeScript code I write in other files. What's the proper way to write a set of reusable CoffeeScript classes and methods with Rails?
推荐答案
最简单的做法是使用命名空间来创建一个可重用的CoffeeScript类和方法所有的课程。如果你的应用程序被称为应用程序,然后在你的初始化代码中发生任何事情:
The simplest thing to do is to namespace all your classes. If your application is called "app" then in your initialization code before anything else happens:
// Set up the namespace.
window.app = { }
,然后在 .coffee
档案:
class app.Pancakes
#...
然后你将有一个全局命名空间,你可以通过该命名空间引用一切:
Then you'd have a global namespace and you'd reference everything through that namespace:
pancakes = new app.Pancakes
类似的简单功能:
app.where_is = (pancakes, house) -> ...
# And elsewhere...
x = app.where_is(...)
有多种方法可以设置和部分隐藏命名空间,但它们都是上述的变体,简单的命名空间可以很好地与Rails资产管道配合使用。
There are various ways of setting up and partially hiding the namespace but they're all variations on the above and simple namespacing plays nicely with the Rails asset pipeline.
这篇关于一组CoffeeScript / JavaScript类和方法可用于Rails应用程序的休息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!