簡體   English   中英

從coffeescript編譯為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM