我对此做了一些搜索,但我找不到信息。我正在sinatra中构建一个应用程序,并使用coffeescript模板引擎。默认情况下,编译后的代码是这样包装的:
(function() {
// code
}).call(this);我想使用--bare标志删除它,这样不同的文件就可以访问我定义的类等等。我意识到更多地包含它有助于防止变量冲突等等,但我在这里主要处理两个部分。一个是业务逻辑,以及数据在类结构中的排列。另一个是使用raphaeljs的视图功能。我更喜欢将这两部分分别保存在不同的文件中。因为这样包装的两个文件不能访问数据,所以它显然不能工作。但是,如果您能想到比使用--bare选项更好的解决方案,我洗耳恭听。
发布于 2012-04-14 05:10:28
裸编译是一种糟糕的做法。每个文件应该只导出与应用程序其余部分相关的公共对象到全局范围。
# foo.coffee
class Foo
constructor: (@abc) ->
privateVar = 123
window.Foo = Foo # exportFoo现在可以在全球范围内使用。现在,如果这种模式不实用,也许你应该重新考虑一下你的结构。如果你不得不导出更多的东西,你可以更好地嵌套和命名,这样可以通过更少的全局变量公开更多的数据。
发布于 2012-04-14 09:55:00
我支持Alex的回答,但是如果你一定要这样做,我相信my answer to the same question for Rails 3.1在这里也是适用的:
Tilt::CoffeeScriptTemplate.default_bare = true在您的应用程序中的某个位置。
https://stackoverflow.com/questions/10148228
复制相似问题