我有一个日志API想要暴露给一些内部JS代码。我希望能够使用此API进行日志记录,但仅在进行调试构建时才能记录日志。目前,我已经部分地实现了它:它只会在调试构建时记录日志,但是当进行常规构建时,对此API的调用仍然存在于代码中。我希望在我使用 goog.DEBUG = false 进行编译时,闭包编译器能够移除这个基本上是死代码的部分。
日志定义:
日志定义:
goog.provide('com.foo.android.Log');
com.foo.Log.e = function(message){
goog.DEBUG && AndroidLog.e(message);
}
goog.export(com.foo.Log, "e", com.foo.Log.e);
AndroidLog是一个提供给WebView的Java对象,正确地进行了外部扩展,做法如下:
var AndroidLog = {};
/**
* Log out to the error console
*
* @param {string} message The message to log
*/
AndroidLog.e = function(message) {};
然后,在我的代码中,我可以使用:
com.foo.Log.e("Hello!"); // I want these stripped in production builds
我的问题是:我该如何提供这个API并在代码中使用它,但在未使用goog.DEBUG = true编译时将对此API的任何调用都删除?目前,我的代码库中包含了一堆从未被调用过的Log API调用,导致代码变得臃肿。我想把它们删除。谢谢!
if (!goog.DEBUG) AndroidLog.e = function() {};
放在你的代码开头?请注意,如果你导出了com.foo.Log.e
,编译器不会将其删除。 - Stephen Chung