如何不封装 Coffeescript
Posted
技术标签:
【中文标题】如何不封装 Coffeescript【英文标题】:How to not encapsulate Coffeescript 【发布时间】:2012-06-16 15:59:34 【问题描述】:我不知道是否所有的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
【问题讨论】:
How can I use option "--bare" in Rails 3.1 for CoffeeScript? 的可能重复项 @TrevorBurnham,确实类似。但是,我无法使用与该问题及其答案相关的搜索词找到该问题,因此这个问题一定有一些价值。 这就是为什么重复项被关闭而不是被删除的原因:它允许他们指出一个更规范的问题。 【参考方案1】:Coffeescript 文档说,为了封装/安全,所有脚本都将被包装在一个匿名函数中。要使某些内容在全局范围内可访问,请执行以下操作:
window.myvar = myvar
【讨论】:
【参考方案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();
这个模式的一个很好的解释可以是found here.
【讨论】:
+1 了解详情。 (其他人的对我来说更容易消化。)以上是关于如何不封装 Coffeescript的主要内容,如果未能解决你的问题,请参考以下文章