0

我无法理解使用 google 闭包编译器 API 服务的基本流程。我会问一些问题:

  1. 我应该在我发送的要编译的文件列表中包含闭包的 base.js 吗?
  2. deps.js 太大而无法发送。我应该自己包含它,还是编译器服务会使用它自己的副本?
  3. 据我了解,编译器的功能之一是它解析“require”语句,并在输出中包含必要的代码。例如,如果我使用他们提供的在线 UI 工具并在输入框中输入以下内容:

    goog.require("goog.dom");
    goog.dom.getElement("test");
    

并按“编译”,我希望得到足够的谷歌关闭代码来执行这个片段。相反,我只是得到同样的东西(减去空格)。我不明白什么?

最后,谷歌的编译器服务对你发送的文件有 200k 的大小限制。我使用的是一个名为 Minify 的 PHP 包,它可以让你发送一个文件列表,这些文件一次通过服务发送一个,大概这就是谷歌希望你处理 200k 限制的方式。编译器应该检查,比如说,你的私有变量都没有在任何地方作为公共访问,这似乎意味着它必须了解列表中的所有文件,以确保文件中定义的类档案B中没有违反A。是这种情况吗?服务是否以某种方式记住每个文件的解析,将其保存在内存中,并交叉检查所有内容?还是我的理解还有缺陷?

多谢你们!

4

2 回答 2

2

如果您从“添加 url”的下拉列表中选择“关闭库”,它将添加到配置中:

// @ use_closure_library=true

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

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

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

于 2011-08-01T14:59:16.107 回答
0

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

于 2011-10-03T14:03:17.297 回答