1

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

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

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

4

1 回答 1

2

不幸的是,暂时没有。但是,CoffeeScript 问题中正在积极讨论一个能够准确解决这种用例(以及其他,特别是关于异步回调代码和回调地狱)的功能提案。提议的功能称为“回调”,它基本上是一种语法转换,使这种回调嵌套代码看起来更具顺序性。您的模块定义如下所示:

(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
于 2013-02-11T20:43:42.293 回答