问题标签 [google-closure-compiler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3450 浏览

compiler-construction - 如何使用 Closure Compiler @suppress 多个警告?

@suppress可以通过annotation使用 Google 的 Closure Compiler 在每个文件的基础上抑制警告。但是,似乎不可能同时抑制多个警告——例如globalThisandcheckVars警告。我都试过了

但两者都导致@suppress注释被忽略。多@suppress行也不起作用。

0 投票
1 回答
3192 浏览

visual-studio-2010 - 如何在 Visual Studio 2010 中集成 Google Closure Compiler 作为构建步骤

有这方面的参考或教程吗?如果可能的话,只有在文件被修改时才构建 javascript 文件。

0 投票
1 回答
684 浏览

javascript - 闭包编译器 ADVANCED_OPTIMIZATIONS 和函数封装

使用 Google Closure Compiler (ADVANCED_OPTIMIZATIONS),似乎在将代码封装在函数中时,有些高级优化无法完成。

编译为

函数封装阻止高级变量替换的原因是什么?有没有办法做到这一点,使两个片段编译成相同的输出?

0 投票
1 回答
1088 浏览

google-closure-compiler - 使用闭包编译器时如何保留 jQuery.ajax.data 对象?

当使用带有 ADVANCED_OPTIMIZATIONS 的闭包编译器时,jQuery.ajax.data 对象发生了变化:

jQuery.ajax.data 对象被转换为{L : "some"}

我可以使用引号,例如'act' : "some",但我希望它在没有引号的情况下工作。在我的外部文件中有:

/** @type {Object.<string,*>} */ jQuery.ajax.data; 但这不起作用。闭包编译器版本 1043

0 投票
1 回答
570 浏览

json - 在高级模式下使用 Google Closure 的第 3 方 JSON?

我在尝试重命名我的 JSON 属性时遇到了闭包编译器的高级优化问题。我正在使用丰富的自动完成控件,并使用从我的操作返回的 JSON 来提供它,其中包含具有姓名和电话属性的联系人。Closure 编译器在我的方法和模板中重命名 Name 和 Phone。在该方法中,我可以通过使用属性名称作为对象的字符串键来绕过它,但我不知道如何使用模板来做到这一点:

我的 JSON 对象具有属性“Name”和“Phone”的全名,但该函数将它们重写为“Hx”和“Az”之类的东西。我的模板同上:

如果我将这两行添加到 makeRow 函数的开头,它会将压缩名称设置为原始名称中的正确值:

这样做在空间和性能方面似乎都很浪费。此外,我无意为我的所有 JSON 对象执行此操作,我计划将来在我的应用程序中使用很多(这只是一个简单的测试)。我不知道如何将新名称映射到旧名称。我可以创建一个源图,但是只有一堆数字,我不知道它们是什么意思。如果我能弄清楚,那么也许我可以在 C# 中编写一个简单的属性映射器来创建具有缩短名称的动态对象。

如果我必须使用简单的优化模式,考虑到闭包库中所有对象和属性的冗长名称,这将很难。它应该很简单。我认为如果他们有一个 @json 标签而不是 @param 会阻止重命名,或者有一些其他信号让 @param 不重命名对象的属性,那就太好了:

会成为

我发现我可以通过创建一个 externs.js 文件并在编译时指定它来使属性名称保持不变:

我认为任何具有这些名称的对象属性都不会被压缩,是这样吗?我想我可以写一些助手来生成我将使用的类的长属性名称列表。此外,我可能喜欢在某些事情上使用动态类型,并且担心我可能会忘记或拼错属性名称。


编辑:

不是项目想要支持的东西,他们建议将对象作为参数,如下所示:

0 投票
3 回答
1352 浏览

javascript - 谷歌闭包编译器的高级优化没有优化一些变量

我在使用高级优化的 Google Closure Javascript 编译器时遇到了问题。正如文档所建议的,为了保留导出的 Javascript,我执行以下操作:

问题是,有时,无论出于何种原因,myFuncmyFunc2不会缩短,我在最终输出中看到这样的代码:

这显然不太理想。

我怎样才能防止这种情况发生?


进一步的实验表明,某些关键字(例如“get”)不会被编译。

编译成

我仍然不知道是什么原因造成的。

0 投票
2 回答
1561 浏览

javascript - jQuery 使用哪些工具来压缩其源代码

jQuery 在 1.6.2 版本中使用哪些工具来压缩其源代码?

0 投票
2 回答
1925 浏览

javascript - Google Closure Compiler 解析错误:`css({float:'left'})` 的属性 ID 无效

我正在使用 Google Closure Compiler 应用程序(命令行界面)。当我运行它时,我收到以下错误。

0 投票
2 回答
954 浏览

javascript - 带有三元组的 Google 闭包编译器:错误 - 不一致的返回类型

所以我有一个辅助命名空间,我在开发 JS 时存储有用的添加。现在我计划更好地记录它们并使用 JsDoc 和 Google Closure 编译器的帮助来增强我的 JS。我得到了截至今天下午 2 点的最新版本。但是,在以下代码上运行编译器时出现错误:

所以在两条返回线上我得到编译器错误“错误 - 不一致的返回类型”

如何在 Google 闭包编译器中使用像这样的三元运算符?是的,我用谷歌搜索过,但我总是得到不相关的搜索结果。现在我将删除三元,但它更愿意在没有错误的情况下使用它们:

所以我按照“Tomasz Nurkiewicz”的建议更新了我的陈述,但我仍然收到错误:更改为代码:

编译器输出:

即使我尝试将类型设置为 {Boolean|null} ,我仍然会收到错误消息。是什么赋予了?

0 投票
1 回答
1243 浏览

java - 加速谷歌关闭编译器jar

当我在线使用 Google Closure Compiler for JavaScript 时,它的速度非常快;但是,从命令行 ( java -client -jar path/to/closure.jar options...) 运行最多需要 10 秒。

有什么方法可以将其减少到与网络应用程序相同的时间(最多 3 秒)?我无法使用 Web 应用程序,因为我的公司要求所有构建都能够在没有互联网连接的情况下工作。

我怀疑这主要是启动时间(为什么我添加了-client标签),但我不知道。