我有一个file.js文件,其变量的值是(嵌套的)对象文字。像
这样的东西var ojb = {
foo: {
bar: 'baz'
},
quux: [
{ /* stuff */ },
{ /* stuff */ }
]
};
我将谷歌闭包编译器与选项--formatting=PRETTY_PRINT
和--compilation_level=WHITESPACE_ONLY
结合使用,因为我只想让它“清理”输出(删除注释,统一大括号......)但我找到了它“内联”了对象文字:输出包含
var obj = {"foo":{"bar":"baz"},"quux":[{...},{...}]};
“难以辨认”。
有没有办法告诉编译器在各行上跨越对象文字(理想情况下我想要像http://jsonlint.com的输出那样的语法)
答案 0 :(得分:1)
好吧,既然我的评论 是你问题的实际答案,我会在这里发布:
WHITESPACE_ONLY
汇编可能是最不具侵入性的编译模式但正如文档明确指出的那样:
WHITESPACE_ONLY编译级别从代码中删除注释,还删除换行符,不必要的空格和其他空格。输出JavaScript在功能上与源JavaScript相同。
来自the docs, on compilation modes。正如您可以在此页面上阅读的那样,WHITESPACE_ONLY
编译将返回所有模式中最易读的代码。所有其他模式执行WHITESPACE_ONLY
编译,除此之外还要执行其他操作。
回答您的问题:不,没有办法告诉编译器为某些代码留下过多的空白区域,并在代码的其他部分发疯。您可以做的唯一事情就是编写一个脚本,它提取您想要保留的对象文字,并将它们保存到单独的文件中。编译原始文件后,您可以将这些对象文字的内嵌版本替换为“白色空间重”对应文本。
但是既然你非常热衷于保持代码的可读性,我强烈建议不缩小任何内容,或者使用控制台中的漂亮打印按钮,与控制台为您提供检查对象的其他整洁功能缠绕在一起。
更好的方法是:编写代码,并对其进行广泛测试,只缩小/编译进行生产(IE:完成编码/调试时)。毕竟,这就是使用这些工具的方式。