首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sinatra coffeescript --bare?

Sinatra coffeescript --bare?
EN

Stack Overflow用户
提问于 2012-04-14 04:58:35
回答 2查看 558关注 0票数 0

我对此做了一些搜索,但我找不到信息。我正在sinatra中构建一个应用程序,并使用coffeescript模板引擎。默认情况下,编译后的代码是这样包装的:

代码语言:javascript
复制
(function() {
  // code
}).call(this);

我想使用--bare标志删除它,这样不同的文件就可以访问我定义的类等等。我意识到更多地包含它有助于防止变量冲突等等,但我在这里主要处理两个部分。一个是业务逻辑,以及数据在类结构中的排列。另一个是使用raphaeljs的视图功能。我更喜欢将这两部分分别保存在不同的文件中。因为这样包装的两个文件不能访问数据,所以它显然不能工作。但是,如果您能想到比使用--bare选项更好的解决方案,我洗耳恭听。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-14 05:10:28

裸编译是一种糟糕的做法。每个文件应该只导出与应用程序其余部分相关的公共对象到全局范围。

代码语言:javascript
复制
# foo.coffee
class Foo
  constructor: (@abc) ->

privateVar = 123

window.Foo = Foo # export

Foo现在可以在全球范围内使用。现在,如果这种模式不实用,也许你应该重新考虑一下你的结构。如果你不得不导出更多的东西,你可以更好地嵌套和命名,这样可以通过更少的全局变量公开更多的数据。

票数 2
EN

Stack Overflow用户

发布于 2012-04-14 09:55:00

我支持Alex的回答,但是如果你一定要这样做,我相信my answer to the same question for Rails 3.1在这里也是适用的:

代码语言:javascript
复制
Tilt::CoffeeScriptTemplate.default_bare = true

在您的应用程序中的某个位置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10148228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档