标签: google-closure-compiler

带有jQuery应用程序的Google Closure Compiler

我有很多时间投入到jquery和用它构建的大型应用程序中.最近我一直在审查Google Closure Library,但此时发现它并不像jquery那样优雅.我相信它可能有一些潜力,并会更多地研究它,但是现在我打算继续使用jQuery作为我的基础框架.

但是,我对Google Closure Compiler印象非常深刻.我希望在我的应用程序的构建过程中开始使用它.遗憾的是,将其用于不遵循标准Google Closure标准的项目并不容易.

在开发基于jquery的项目和使用Google Closure Compiler方面是否有任何最佳实践或良好资源?例如:

  1. 使用它编译jquery和jquery-ui是否有意义,还是应该继续在google CDN上指向这些资源?我确定我的jquery和jquery-ui会更小,因为我没有使用库的所有功能,但是指向CDN会增加文件已经存在于访问者缓存中的机会.

  2. 我的应用程序被拆分成许多文件,每个函数都有一个文件.我想按照特定的顺序将它们组合在一起,并将它们缩小为我网站上每个部分的文件.我想自动化这个过程.

  3. 目前我的项目有一个java后端,并使用Maven构建.将Google Closure Compiler添加到此构建过程中是否有意义?

基本上,我正在寻找任何特定于使用Google Closure Compiler和jQuery的优秀资源.

jquery google-closure google-closure-compiler

38
推荐指数
5
解决办法
2万
查看次数

如何强制谷歌闭包编译器保持"使用严格"; 在编译的js代码中?

如果您正在使用模块模式并具有以下内容:

(function () {
   "use strict";
   // this function is strict...
}());
Run Code Online (Sandbox Code Playgroud)

并使用Google Closure Compiler编译代码,该"use strict";指令不会使其进入编译文件.

那么如何防止Closure Compiler删除ES5/strict指令呢?

(注意,我不想使用强制执行ES5 /严格模式的其他模式,即简单地将"use strict";添加到编译文件的第一行.我想使用此处所述的模块模式.)

javascript google-closure google-closure-compiler ecmascript-5

30
推荐指数
3
解决办法
7676
查看次数

Play Framework 2:JavaScript因缩小而变得复制(谷歌闭包编译器)

我有一个与JavaScript缩小相关的奇怪问题,问题是当在文件/assets/javascript/test夹中放置test1.js,test2.js等JavaScript文件并使用以下关闭编译器选项时:

val defaultOptions = new CompilerOptions()
    defaultOptions.closurePass = true
    defaultOptions.setProcessCommonJSModules(false)
    defaultOptions.setPrettyPrint(true)
    CompilationLevel.WHITESPACE_ONLY.setOptionsForCompilationLevel(defaultOptions)
Run Code Online (Sandbox Code Playgroud)

它们会被缩小,但这会导致test1.min.js和test2.min.js文件共享相同的代码... ...当在同一页面中使用文件并占用更多磁盘空间时,这将导致一些额外的JavaScript错误.

但是,如果CompilerOptions没有设置,JavaScript会正确编译而不会重复,但编译级别太严格,我们的JavaScript会停止工作,因为它会显示有关这些文件中写入的某些内容的错误.总的来说,缩小过程激活太晚,无法修复所有项目js文件以使用默认编译器选项,因此现在只有选项将其配置为使用轻微缩小而不使用js重复的方式..对此问题的任何帮助都将非常感谢!

我正在使用Play Framework 2.1.1和Java项目.

javascript google-closure-compiler playframework-2.0 playframework-2.1

28
推荐指数
1
解决办法
1219
查看次数

Google Closure Compiler是否会降低性能?

我正在撰写Google Chrome扩展程序.由于JavaScript文件是从磁盘加载的,因此它们的大小几乎不重要.

无论如何,我一直在使用Google Closure Compiler,因为显然它可以进行性能优化以及减少代码大小.

但是我在Closure Compiler的输出顶部注意到了这一点:

var i = true, m = null, r = false;
Run Code Online (Sandbox Code Playgroud)

这一点显然是为了减少文件大小(整个脚本中true/ null/的所有后续使用false都可以用单个字符替换).

但肯定会有轻微的性能影响吗?读取文字true关键字比按名称查找变量并找到它的值必须更快true...?

这种性能打击值得担心吗?谷歌闭包编译器还有什么可以实际上减慢执行速度吗?

javascript optimization google-closure-compiler

26
推荐指数
2
解决办法
5985
查看次数

让closure-compiler和Node.js发挥得很好

是否有任何项目一起使用node.js和closure-compiler(简称CC)?

CC的官方建议是一起编译应用程序的所有代码,但是当我编译一些包含a的简单node.js代码时require("./MyLib.js"),该行直接放入输出中,但在该上下文中没有任何意义.

我看到几个选项:

  1. 将整个应用程序编码为单个文件.这通过避免它来解决问题,但是对于维护是不利的.
  2. 假设在执行之前将连接所有文件.这再次避免了这个问题,但却使实现未编译的调试模式变得更加困难.
  3. 我想让CC"理解"node.js require()函数,但如果不编辑编译器本身就可能无法完成,可以吗?

javascript require google-closure-compiler node.js

26
推荐指数
3
解决办法
1万
查看次数

我的源映射断点在Google Chrome中无法正常运行

我通过用于Google Closure CompilerNode.js包装器创建了一个连接的缩小文件.当我在Google Chrome中打开开发者工具时,源地图和映射文件都会正确加载.

我遇到的一个问题是,断点不会在源映射文件中触发,就像它们运行未经分析的单独文件会话一样.有时我会尝试在脚本中放置一个断点,它会向下跳几行,而不是我试图设置它.但最令人沮丧的是,当我可以设置断点时,它们不会被触发!我将在我知道正在调用的函数中间设置一个,但脚本永远不会暂停执行.

编辑

我在Ubuntu 13.10上运行Chrome 31.0.1650.57.我也无法在Firefox 25.0中使用它.

javascript debugging google-chrome google-closure-compiler source-maps

25
推荐指数
1
解决办法
5633
查看次数

为什么Google的Closure Compiler会留下一些不必要的空格或换行符?

我注意到,我每次使用的时间谷歌的关闭编译服务,它留下的呈现在页面的右侧编译代码的一些不必要的空格.这些对应于已编译代码的托管版本中的换行符.

例如(注意换行符,每个换行符似乎都是不必要的):

http://troy.onespot.com/static/stack_overflow/closure_spaces.js

到目前为止,我刚刚手动删除它们,但我很好奇他们为什么会在那里.是否限制代码托管版本的行长度使其更具可读性?编译器是否足够聪明,可以有意留下或插入那些以最大化GZIP压缩工作?

我知道他们对文件大小琐碎的影响,但有这么多的努力进入源脚本,每个字节涅槃,它为什么他们有违反直觉.

javascript minify google-closure google-closure-compiler

24
推荐指数
1
解决办法
1829
查看次数

Chrome:可以添加本地JavaScript SourceMap吗?

是否可以添加本地SourceMap?我有一个我无法修改的网站,包含压缩(闭包)JavaScript.我有一个属于该文件的本地JavaScript-SourceMap.有没有办法告诉GoogleChrome(或任何其他浏览器)在页面加载之前/之后添加SourceMap?

javascript browser google-chrome google-closure-compiler

24
推荐指数
1
解决办法
6171
查看次数

使用Closure Compiler中的--module选项创建多个输出文件

我正在创建一个相当大的JavaScript库,使用Closure Compiler进行精彩的压缩以及类型检查和警告系统.

我想创建多个输出文件,因为文件是异步加载的(有些文件只是按需加载).

在源代码中查找,我找到了--module标志,以及一些相关的标志.源代码说明了以下选项:

一个javascript模块规范.格式是<name>:<num-js-files>[:[<dep>,...][:]]].模块名称必须是唯一的.每个dep都是此模块所依赖的模块的名称.必须按依赖顺序列出模块,并且必须按相应的顺序列出js源文件.当--module国旗出现在有关--js的标志是不重要

......这就是我能找到的全部.我想更多地了解如何使用此选项,有没有人有这方面的经验?或者,如果有另一种方法来创建多个输出文件,我会全神贯注.

google-closure-compiler

23
推荐指数
1
解决办法
6338
查看次数

为什么Closure Compiler坚持添加更多字节?

如果我给Closure Compiler这样的话:

window.array = '0123456789'.split('');
Run Code Online (Sandbox Code Playgroud)

它"编译"它:

window.array="0,1,2,3,4,5,6,7,8,9".split(",");
Run Code Online (Sandbox Code Playgroud)

现在你可以说,这更大.Closure Compiler是否有任何理由这样做?

javascript minify google-closure-compiler

20
推荐指数
2
解决办法
1186
查看次数