问题标签 [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.
compiler-construction - 如何使用 Closure Compiler @suppress 多个警告?
@suppress
可以通过annotation使用 Google 的 Closure Compiler 在每个文件的基础上抑制警告。但是,似乎不可能同时抑制多个警告——例如globalThis
andcheckVars
警告。我都试过了
和
但两者都导致@suppress
注释被忽略。多@suppress
行也不起作用。
visual-studio-2010 - 如何在 Visual Studio 2010 中集成 Google Closure Compiler 作为构建步骤
有这方面的参考或教程吗?如果可能的话,只有在文件被修改时才构建 javascript 文件。
javascript - 闭包编译器 ADVANCED_OPTIMIZATIONS 和函数封装
使用 Google Closure Compiler (ADVANCED_OPTIMIZATIONS),似乎在将代码封装在函数中时,有些高级优化无法完成。
编译为
函数封装阻止高级变量替换的原因是什么?有没有办法做到这一点,使两个片段编译成相同的输出?
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
json - 在高级模式下使用 Google Closure 的第 3 方 JSON?
我在尝试重命名我的 JSON 属性时遇到了闭包编译器的高级优化问题。我正在使用丰富的自动完成控件,并使用从我的操作返回的 JSON 来提供它,其中包含具有姓名和电话属性的联系人。Closure 编译器在我的方法和模板中重命名 Name 和 Phone。在该方法中,我可以通过使用属性名称作为对象的字符串键来绕过它,但我不知道如何使用模板来做到这一点:
我的 JSON 对象具有属性“Name”和“Phone”的全名,但该函数将它们重写为“Hx”和“Az”之类的东西。我的模板同上:
如果我将这两行添加到 makeRow 函数的开头,它会将压缩名称设置为原始名称中的正确值:
这样做在空间和性能方面似乎都很浪费。此外,我无意为我的所有 JSON 对象执行此操作,我计划将来在我的应用程序中使用很多(这只是一个简单的测试)。我不知道如何将新名称映射到旧名称。我可以创建一个源图,但是只有一堆数字,我不知道它们是什么意思。如果我能弄清楚,那么也许我可以在 C# 中编写一个简单的属性映射器来创建具有缩短名称的动态对象。
如果我必须使用简单的优化模式,考虑到闭包库中所有对象和属性的冗长名称,这将很难。它应该很简单。我认为如果他们有一个 @json 标签而不是 @param 会阻止重命名,或者有一些其他信号让 @param 不重命名对象的属性,那就太好了:
会成为
我发现我可以通过创建一个 externs.js 文件并在编译时指定它来使属性名称保持不变:
我认为任何具有这些名称的对象属性都不会被压缩,是这样吗?我想我可以写一些助手来生成我将使用的类的长属性名称列表。此外,我可能喜欢在某些事情上使用动态类型,并且担心我可能会忘记或拼错属性名称。
编辑:
不是项目想要支持的东西,他们建议将对象作为参数,如下所示:
javascript - 谷歌闭包编译器的高级优化没有优化一些变量
我在使用高级优化的 Google Closure Javascript 编译器时遇到了问题。正如文档所建议的,为了保留导出的 Javascript,我执行以下操作:
问题是,有时,无论出于何种原因,myFunc
都myFunc2
不会缩短,我在最终输出中看到这样的代码:
这显然不太理想。
我怎样才能防止这种情况发生?
进一步的实验表明,某些关键字(例如“get”)不会被编译。
编译成
我仍然不知道是什么原因造成的。
javascript - jQuery 使用哪些工具来压缩其源代码
jQuery 在 1.6.2 版本中使用哪些工具来压缩其源代码?
javascript - Google Closure Compiler 解析错误:`css({float:'left'})` 的属性 ID 无效
我正在使用 Google Closure Compiler 应用程序(命令行界面)。当我运行它时,我收到以下错误。
javascript - 带有三元组的 Google 闭包编译器:错误 - 不一致的返回类型
所以我有一个辅助命名空间,我在开发 JS 时存储有用的添加。现在我计划更好地记录它们并使用 JsDoc 和 Google Closure 编译器的帮助来增强我的 JS。我得到了截至今天下午 2 点的最新版本。但是,在以下代码上运行编译器时出现错误:
所以在两条返回线上我得到编译器错误“错误 - 不一致的返回类型”
如何在 Google 闭包编译器中使用像这样的三元运算符?是的,我用谷歌搜索过,但我总是得到不相关的搜索结果。现在我将删除三元,但它更愿意在没有错误的情况下使用它们:
所以我按照“Tomasz Nurkiewicz”的建议更新了我的陈述,但我仍然收到错误:更改为代码:
编译器输出:
即使我尝试将类型设置为 {Boolean|null} ,我仍然会收到错误消息。是什么赋予了?
java - 加速谷歌关闭编译器jar
当我在线使用 Google Closure Compiler for JavaScript 时,它的速度非常快;但是,从命令行 ( java -client -jar path/to/closure.jar options...
) 运行最多需要 10 秒。
有什么方法可以将其减少到与网络应用程序相同的时间(最多 3 秒)?我无法使用 Web 应用程序,因为我的公司要求所有构建都能够在没有互联网连接的情况下工作。
我怀疑这主要是启动时间(为什么我添加了-client
标签),但我不知道。