在coffeescript中编写AMD模块时,因为所有内容都包含在一个函数中,所以每个文件最终都是这样的:
define 'myModule', ['dep1', 'dep2'], (dep1, dep2) ->
funcA: ->
funcB: ->
# etc...
funcZ: ->
我喜欢尽量减少代码中的缩进以使其更容易理解,我不喜欢AMD如何为几乎所有内容添加一定程度的缩进。有没有办法避免它?
答案 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