Javascript google闭包编译器、漂亮的打印和对象文字
我有一个file.js文件,其中有一个变量的值是(嵌套的)对象文字。差不多Javascript google闭包编译器、漂亮的打印和对象文字,javascript,json,google-closure-compiler,object-literal,Javascript,Json,Google Closure Compiler,Object Literal,我有一个file.js文件,其中有一个变量的值是(嵌套的)对象文字。差不多 var ojb = { foo: { bar: 'baz' }, quux: [ { /* stuff */ }, { /* stuff */ } ] }; 我将google closure compiler与选项--formatting=PRETTY\u PRINT和--compilation\u level=WHITESPACE\u O
var ojb = {
foo: {
bar: 'baz'
},
quux: [
{ /* stuff */ },
{ /* stuff */ }
]
};
我将google closure compiler与选项--formatting=PRETTY\u PRINT
和--compilation\u level=WHITESPACE\u ONLY
结合使用,因为我只希望它“清理”输出(删除注释,统一大括号…),但我发现它“内联”了对象文字:输出包含
var obj = {"foo":{"bar":"baz"},"quux":[{...},{...}]};
这是“难以辨认的”
有没有办法告诉编译器跨越不同行上的对象文本(理想情况下,我需要的是类似的输出语法)好吧,因为我的注释是对您问题的实际答案,我将在这里发布:在所有编译模式中,
仅空格
编译可能是入侵性最小的,但正如文档中明确指出的:
纯空白编译级别删除代码中的注释,还删除换行符、不必要的空格和其他空白。输出JavaScript在功能上与源JavaScript相同
从。正如您在本页上所读到的,WHITESPACE\u ONLY
编译返回所有模式中最易于阅读的代码。所有其他模式只执行空白_
编译,并执行除此之外的其他操作。回答您的问题:不,没有办法告诉编译器为某些代码保留过多的空白,并对代码的其他部分发疯。您唯一能做的就是编写一个脚本,提取您想要保留的对象文本,并将它们保存到一个单独的文件中。编译原始文本后,可以将这些对象文本的内嵌版本替换为它们的“大量空白”对应项
但是,既然您如此热衷于保持代码的可读性,我强烈建议您不要缩小任何内容,或者使用控制台中的“漂亮打印”按钮,并结合控制台提供的其他整洁功能来检查对象
一种更好的方法是:编写代码,并对其进行广泛测试,并且只针对生产进行缩小/编译(即:当您完成编码/调试时)。毕竟,这就是这些工具的用途。你说得对,但我在生产中使用“仅空白”:有时我们需要在生产中仔细检查bug,或者更新一些配置(变量是“配置对象”)。当需要部署一些(微小的)更改时,我需要传递一个带有修改的补丁文件。不幸的是,当配置对象是如此内联时,diff不像“非内联”版本上的diff那样明显。。。如果google closure compiler没有选项,我需要一个工具来“删除”这个文件中的注释…@VitoDeTullio:我想你又回到了编写自己的脚本的时候了。虽然您可以使用for Inspiration,但如果您想提交一个在打印时更好地处理对象文字的修补程序,我会支持它。@John:加入俱乐部:),我有自己的脚本(用Perl编写),但它非常完美。。。也许这个周末我会为它建立一个github。这不是一个承诺,只是一个可能:-p你不应该改用JavaScript美化器吗?将闭包输出传递给在线美化器。