本文介绍了一组CoffeeScript / JavaScript类和方法可用于Rails应用程序的休息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是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应用程序的休息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 13:49