![](/img/trans.png)
[英]Force bracket notation when compiling from CoffeeScript to JavaScript
[英]Keeping indent after compiling from coffeescript to javascript?
我有文件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
)之外,無法修改CoffeeScript編譯器的輸出。
您是否關心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
打印令牌,則會得到:
[IDENTIFIER angular] [= =] [{{] [IDENTIFIER模塊] [::] [->->] [INDENT 2] [OUTDENT 2] [}}]] [TERMINATOR \\ n] [IDENTIFIER angular] [ 。] [IDENTIFIER模塊] [CALL_START(] [STRING'app'] [,,] [[[] [INDENT 4] [STRING'ngAnimate'] [,,] [TERMINATOR \\ n] [STRING'角度加載- bar'] [,,] [TERMINATOR \\ n] [STRING'ui.router'] [,,] [TERMINATOR \\ n] [STRING'oc.lazyLoad'] [,,] [TERMINATOR \\ n] [STRING'ui .bootstrap'] [,,] [終止符\\ n] [STRING'ngResource'] [輸出4] []]] [CALL_END)] [終止符\\ n]
哪個確實將換行符存儲為[TERMINATOR \\n]
。 編寫(和調試!)執行此操作的工具雖然不一定很容易,但超出了Stack Overflow答案的范圍;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.