coffeescript中的AMD模块没有缩进整个文件?

时间:2013-02-11 15:03:56

标签: javascript coffeescript amd

在coffeescript中编写AMD模块时,因为所有内容都包含在一个函数中,所以每个文件最终都是这样的:

define 'myModule', ['dep1', 'dep2'], (dep1, dep2) ->
    funcA: ->
    funcB: ->
    # etc...
    funcZ: ->

我喜欢尽量减少代码中的缩进以使其更容易理解,我不喜欢AMD如何为几乎所有内容添加一定程度的缩进。有没有办法避免它?

1 个答案:

答案 0 :(得分:2)

不幸的是,不是现在。但是一个功能提案可以解决这种用例(以及其他一些,特别是关于异步回调代码和一般的回调地狱)is being actively discussed in the CoffeeScript Issues。所提出的功能称为“回调”,它基本上是一种语法转换,可以使这种回调嵌套代码看起来更顺序。您的模块定义如下:

(dep1, dep2) <- define 'myModule', ['dep1', 'dep2']

funcA: ->
funcB: ->
# etc...
funcZ: ->

如果你想要现在正在使用的东西,你可以做的一件事就是在构建配置中添加一个预处理器步骤,以便在进入之前添加define ...行和缩进。 CoffeeScript编译器。

您可以在.coffee源上声明您的模块以及一些特殊注释:

#!module=myModule
#!dependencies=dep1,dep2

funcA: ->
funcB: ->
# etc...
funcZ: ->

然后有一个脚本可以读取这些注释并生成define 'myModule', ['dep1', 'dep2'], (dep1, dep2) ->行,并为输入文件中的每一行添加一级缩进。

所以你的构建步骤看起来像:

cat myModule.coffee | add-amd | coffee -sc > myModule.js
相关问题