我正在探索不同的方法来压缩我的JavaScript代码,包括常规的JSMin, Packer和YUI解决方案。我对新的Google Closure Compiler非常感兴趣,因为它看起来异常强大。
我注意到Dean Edwards packer具有一项功能,可以排除以三个分号开头的代码行。这很方便,可以排除调试代码。例如:
我正在清理我的代码库,想要添加像这样的提示以轻松排除调试代码。为此,我想弄清楚这是否是最佳解决方案,或者是否有其他技术可用。
因为我还没有选择如何缩小代码,所以我希望以与我最终选择的缩小器兼容的方式来清理代码。所以我的问题是:
1. 使用分号是一种标准技术吗?还有其他方法吗? 2. Packer是唯一提供此功能的解决方案吗? 3. 其他解决方案是否也可以适应这种方式工作,还是它们有实现此目的的替代方法? 4. 我可能会开始使用Closure Compiler。现在有什么我应该做的来为此做好准备吗?
我注意到Dean Edwards packer具有一项功能,可以排除以三个分号开头的代码行。这很方便,可以排除调试代码。例如:
;;; console.log("Starting process");
我正在清理我的代码库,想要添加像这样的提示以轻松排除调试代码。为此,我想弄清楚这是否是最佳解决方案,或者是否有其他技术可用。
因为我还没有选择如何缩小代码,所以我希望以与我最终选择的缩小器兼容的方式来清理代码。所以我的问题是:
1. 使用分号是一种标准技术吗?还有其他方法吗? 2. Packer是唯一提供此功能的解决方案吗? 3. 其他解决方案是否也可以适应这种方式工作,还是它们有实现此目的的替代方法? 4. 我可能会开始使用Closure Compiler。现在有什么我应该做的来为此做好准备吗?
log
函数将被剥离作为死代码。 - Matthewconsole.log('...')
而不是log('...')
?使用log()
会出错。另外,如果需要在多个文件中使用,如 @anisart 所说,它需要在闭包中运行,那么它该如何工作呢?您必须在每个页面上都放置您的代码吗? - tim petersonconsole.log()
不同,这种方法的一个重要缺点在于,当LOG=true
时,开发工具中报告的log()
行号是该函数定义的位置而不是调用位置。因此,所有消息都报告为在同一行上,而不是它们发生的位置。这很糟糕,因为消息的行号通常对于调试非常关键。 - tim peterson/** @const */ var LOG = false;
。2)在您的代码中查找/更改console.log
为LOG&&console.log
。所有的 console.log 调用将被编译器移除。但是,对我来说,这仅适用于 "ADVANCED_OPTIMIZATIONS" 模式。 - user56reinstatemonica8