我已经对此做了一些搜索,但我找不到信息。我正在sinatra中构建一个应用程序,并使用coffeescript模板引擎。默认情况下,编译的代码包装如下:
(function() {
// code
}).call(this);
我想使用--bare标志删除它,因此不同的文件可以访问我正在定义的类等。我意识到让它更多包含有助于防止可变冲突等等,但我正在研究两个主要部分。一个是业务逻辑,以及类结构中的数据排列。另一种是使用raphaeljs的视图功能。我宁愿将这两个部分保存在单独的文件中。由于这样包装的两个文件无法访问数据,因此显然无法正常工作。但是,如果你能想到一个比使用--bare选项更好的解决方案,我会全力以赴。
答案 0 :(得分:2)
裸编辑只是一种不好的做法。每个文件都应该只向与应用程序其余部分相关的公共对象导出到全局范围。
# foo.coffee
class Foo
constructor: (@abc) ->
privateVar = 123
window.Foo = Foo # export
Foo
现已全球上市。现在,如果这种模式不实用,也许你应该重新考虑一下你的结构。如果你必须导出太多东西,你可以更好地嵌套和命名空间,这样就可以通过更少的全局变量公开更多的数据。
答案 1 :(得分:1)
我支持亚历克斯的答案,但如果你绝对必须这样做,我相信my answer to the same question for Rails 3.1也适用于此:放线
Tilt::CoffeeScriptTemplate.default_bare = true
在你的应用程序的某个地方。