帮助谷歌闭包编译器基础知识

时间:2011-07-31 22:04:46

标签: google-closure-compiler

我无法理解使用谷歌闭包编译器API服务的基本流程。我只想解决一些问题:

  1. 我是否应该在我发送的文件列表中包含closure的base.js?
  2. deps.js太大,无法发送。我本人应该自己包含它,还是编译服务会使用自己的副本?
  3. 据我了解,编译器的一个特性是它解析“require”语句,并在输出中包含必要的代码。例如,如果我转到他们提供的online UI tool并在输入框中输入以下内容:

    goog.require("goog.dom");
    goog.dom.getElement("test");
    
  4. 并按“编译”,我希望能够获得足够的谷歌闭包代码来执行此代码段。相反,我只是得到同样的东西(减去空白)。我不理解的是什么?

    最后,google的编译器服务对你发送的文件有200k的限制。我正在使用一个名为Minify的PHP软件包,它允许你发送一个文件列表,这些文件一次一个地通过服务发送,并且可能这是谷歌期望你处理200k限制的方式。编译器应该检查,比如说,没有任何私有变量在任何地方被公开访问,这似乎暗示它必须知道列表中的所有文件,以确保在文件中定义的类文件B中没有违反A.是这种情况吗?服务是否以某种方式记住每个文件的解析,将其保存在内存中,并交叉检查所有内容?或者我的理解是否有缺陷?

    谢谢,伙计们!

2 个答案:

答案 0 :(得分:2)

如果您从下拉列表中选择“Closure Library”以“添加网址”,则会添加它将添加的配置:

// @ use_closure_library=true

这将使web服务包含“goog.require”的源,闭包库本身可以满足这些源。如果您的代码必须满足您的任何goog.requires,则必须手动包含该URL。

在某些时候,您可能想要运行自己的编译服务,您可能会发现Michael Bolin的Plovr项目很有用:

http://code.google.com/p/plovr/

答案 1 :(得分:0)

我创建了一个名为Shoreline的Google Closure项目模板。它包含在本地创建,测试和编译Closure项目所需的一切。没有代码大小限制,也没有正常运行时间问题。