Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

Closure_Library/Compiler

Closure Compiler

参考

重要なTIPS

exportSymbolを使うこと!

Closure CompilerはオプションによってObfuscationを行うが、(これはJava等の他の言語でも同じだが)obfuscationを行うと元の名称は存在しなくなってしまう。もし.jsファイルの中で定義されたnamespaceをhtmlファイルの中でも使用したい場合にはexportSymbol指定をしなければならない。例えば

.jsファイル

goog.provide("my.name.space.Sample");
my.name.space.Sample = function() {
};
goog.exportSymbol("my.name.space.Sample", my.name.space.Sample);

.htmlファイル

....
  <script type="text/javascript">
    new my.name.space.Sample();
  </script>
....

コンパイルエラーとその対処

goog.debug.ErrorHandlerでエラー

     [exec] WebContent\closure-library\closure\goog\events\events.js:895: WARNING - Bad type annotation. Unknown type goog.debug.ErrorHandler
     [exec]  * @param {goog.debug.ErrorHandler} errorHandler Error handler with which to
     [exec]            ^
     [exec] 0 error(s), 1 warning(s), 96.1% typed
     [exec] C:\Users\admin\Desktop\eclipse-js\closurePrimer\WebContent\closure-library\closure\bin\build\closurebuilder.py: JavaScript compilation succeeded.

これはどうしようもないようだ。--jscomp_error=checkVarsをjscomp_warningに変更

goog.async.Deferred

     [exec] depstree.NamespaceNotFoundError: Namespace "goog.async.Deferred" never provided. Required in Source WebContent\closure-library\closure\goog\fs\filereader.js

thrird_partyをダウンロードし忘れている。 closure libraryをsubversionからダウンロードするとき、closure以下のみをダウンロードして、その兄弟フォルダのthird_partyフォルダをダウンロードしていない。