Mam interfejs logowania, który chcę udostępnić niektórym wewnętrznym kodom JS. Chcę móc korzystać z tego interfejsu API do rejestrowania, ale tylko wtedy, gdy robię kompilację debugowania. W tej chwili mam to częściowo działa. Loguje się tylko na kompilacjach debugowania, ale wywołania tego interfejsu API wciąż znajdują się w kodzie, gdy istnieje regularna kompilacja. Chciałbym, aby kompilator zamykający usunął ten zasadniczo martwy kod, gdy kompilator z goog.DEBUG = false.Wykonaj funkcję rejestru taśmowego kompilatora zamknięcia zastosowań
definicja Log:
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 jest obiektem Java dostarczone WebView to będzie działać w, a właściwie externed tak:
var AndroidLog = {};
/**
* Log out to the error console
*
* @param {string} message The message to log
*/
AndroidLog.e = function(message) {};
Następnie w moim kodu, można użyć :
Moje pytanie brzmi: jak mogę zapewnić ten interfejs API, użyj tego API na całym moim kodzie, ale potem h ave wszelkie połączenia z tym API usunięte, gdy nie zostały skompilowane z goog.DEBUG = prawda? W tej chwili moja baza kodu jest nadęta dzięki kilku połączeniom do Log API, które nigdy nie są wywoływane. Chcę usunąć.
Dzięki!
OK, po jakimś dalszego kopania, wydaje się, że funkcje externed nie są wstawiane. http://code.google.com/p/closure-compiler/issues/detail?id = 230 Nadal chciałbym znaleźć obejście inne niż poprzedzanie każdego połączenia z goog.DEBUG && –
Sam napisałem mały skrypt w Pythonie, aby usunąć wszystkie moje błędy debugowania ze źródła w ramach mojego procesu kompilacji. Mógłbym coś znaleźć, kiedy tego potrzebowałem. To dziwne, ponieważ powinna być taka powszechna potrzeba. – jfriend00
Tak, mogę iść tą drogą :) –