我有一个日志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是提供给网页视图,这将在运行一个Java对象,并妥善externed这样的:
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,使用此API都在我的代码,但则h当没有编译goog.DEBUG = true时,是否删除了对此API的任何调用?现在,我的代码库变得越来越臃肿,对一些从不被调用的Log API的调用。我想要删除。
谢谢!
OK,经过一些进一步深挖,看来externed功能不被内联。 http://code.google.com/p/closure-compiler/issues/detail?ID = 230 我还是想找到一个比前面加上goog.DEBUG && – 2012-03-21 02:46:47
每一个电话我用Python写了一个小脚本,自己剥夺我所有的调试封邮件出源作为我的生成过程的一部分以外的解决方法。当我需要它时,我也能找到一些东西。这很奇怪,因为它应该是这样一个共同的需求。 – jfriend00 2012-03-21 03:24:00
是啊,我可你为什么要出口的“e”走这条路:) – 2012-03-21 03:42:23