【问题标题】:help with google closure compiler basics谷歌闭包编译器基础知识的帮助
【发布时间】:2019-03-28 06:25:19
【问题描述】:

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

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

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

然后按“编译”,我希望得到足够的 google 闭包代码来执行这个 sn-p。相反,我只是得到同样的东西(减去空格)。我不明白什么?

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

谢谢各位!

【问题讨论】:

标签: google-closure-compiler


【解决方案1】:

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

// @ use_closure_library=true

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】: