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