4

我不知道是否所有的coffeescript 编译器都将它们的脚本包装在匿名函数中,但我看到Rails 就是这样做的。如何禁用此封装?

我想将几个初始化函数放在一个咖啡脚本文件中,然后从页面<script>标记中调用其中一个(以便每个页面调用不同的初始化程序)。如果初始化函数被封装,这不可能。

Coffeescript 初始化函数:

initializerA = -> console.log 'foo'
initializerB = -> console.log 'bar'

页面代码:

<script>$(document).ready(initializerA)</script>

系统:coffee-rails 3.2.1、Rails 3.2.3、Ruby 1.9.3

4

2 回答 2

7

Coffeescript 文档说,为了封装/安全,所有脚本都将被包装在一个匿名函数中。要使某些内容在全局范围内可访问,请执行以下操作:

window.myvar = myvar
于 2012-06-13T16:35:13.943 回答
2

您可以通过执行以下操作将多个文件放入一个文件中:

((Demo, $, undefined_) ->
  Demo.utils = Demo.utils or {}

  Demo.utils.bacon = (->
      alert("bacon called")
    )()

  Demo.utils.eggs = (->
      alert("eggs called")
    )()
) window.Demo = window.Demo or {}, jQuery

然后在您的页面中调用适当的方法:

Demo.utils.bacon();

可以在这里找到对这种模式的一个很好的解释。

于 2012-06-13T16:35:14.243 回答