我有文件 app.coffee
angular
.module('app', [
'ngAnimate',
'angular-loading-bar',
'ui.router',
'oc.lazyLoad',
'ui.bootstrap',
'ngResource'
])
当我将其编译为javascript时,它看起来像这样
// Generated by CoffeeScript 1.10.0
(function() {
angular.module('app', ['ngAnimate', 'angular-loading-bar', 'ui.router', 'oc.lazyLoad', 'ui.bootstrap', 'ngResource']);
}).call(this);
有什么方法可以保持缩进吗?
除了几个简单的选项(例如 --bare
)。
你关心你的C程序生成的汇编代码是什么样子的吗?还是你的Python程序的字节码?通常你不会,你很少看它来调试特定问题。CofeeScript 生成的 JavaScript 代码是相同的。接受编译的 JS 代码不供人类使用。当然,它的格式使您可以读取它以调试问题(这很好),但这不是主要问题。
话虽如此,您可以通过外部格式化工具运行它,但是它们如何区分这两个数组:
angular
.module('app', [
'ngAnimate',
'angular-loading-bar',
'ui.router',
'oc.lazyLoad',
'ui.bootstrap',
'ngResource'
])
one_line_array = ['ngAnimate', 'angular-loading-bar']
除了使用JS代码和CoffeeScript代码之外,没有其他方法。
如果你真的想要这个,你需要修改 CoffeeScript 源代码,或者编写自己的工具来分析 CofeeScript 源代码并相应地修改 JavaScript 输出。如果使用 coffee --tokens
打印令牌,则会得到:
[标识符角度] [= =] [{ {] [标识符模块] [: ::标识符模块] [: ::标识符 ] [-> ->] [缩进 2] [缩进 2] [} }] [终结符 ] [标识符角度] [. .] [标识符模块] [CALL_START (] [字符串"应用"] [, ,] [[] [缩进 4] [字符串 'ngAnimate'] [, ,] [终止符 ] [字符串"角度加载条"] [, ,] [终止符 ] [字符串"ui.router"] [, ,] [终止符 ] [字符串 'oc.lazyLoad'] [, ,] [终止符 ] [字符串 'ui.bootstrap'] [, ,] [终止符 ] [字符串 'ng资源'] [缩进 4] [] ]] [CALL_END )] [终结者 ]
它确实将换行符存储为 [TERMINATOR n]
.编写(和调试!)一个这样做的工具不一定容易,而且超出了堆栈溢出答案的范围;-)