【问题标题】:How to use Google's Closure to compile JavaScript如何使用 Google 的 Closure 编译 JavaScript
【发布时间】:2010-12-14 02:24:10
【问题描述】:

Google 刚刚发布了Closure,这是一个缩小 JavaScript 的编译器。

在产品网站上,它说“Closure Compiler 也已与 Page Speed 集成”。

如何使用 Page Speed 通过 Closure 编译我的网页 JavaScript?

(或者,有没有一个网站,我可以简单地粘贴到我的 JavaScript 中,让闭包缩小它?

【问题讨论】:

  • Google 很棒,因为他们通常会提供其“开发人员”软件的演练和教程。闭包也不例外。开始 here 并点击您想了解的工具的链接。然后,只需阅读并跟随。他们有大量关于每个工具的信息。享受吧!
  • 嘿@Ted,我会扩展问题以在命令行上也包括“如何编译javascript”。

标签: javascript minify google-closure google-closure-compiler


【解决方案1】:

对于单个文件来说很简单

java -jar $path_to_jar/compiler.jar --js input_file.js \
          --js_output_file output_file.js

对于多文件项目,您可以将calcdeps.pycompiler.jar 结合使用

#!/bin/sh$
$CALCDEPS_PATH=/path/to_calcdeps  #directory containing calcdeps.py
$JAR_PATH=/path/to_jar            #directory containing compiler.jar
$CLOSURE_PATH=/path/to_closure    #contains directory "closure"
$CALCDEPS_PATH/calcdeps.py --path $CLOSURE_PATH \
                           --path . \
                           --compiler_jar $JAR_PATH/compiler.jar \
                           --input main_project_file.js \
                           --output_mode compiled \
                           > compiled_project_file.js

这样编译器会提供有关类型错误等的有意义的信息。类型错误可以在编译时被捕获,因为compiler.jar 使用certain JSDoc comments 获取类型信息。

额外的编译器标志可以与-f--compiler_flags 选项一起传递给calcdeps.py

如果你想使用高级优化集

--compiler_flags "--compilation_level=ADVANCED_OPTIMIZATIONS"

注意双引号和等号 - 必须在 bash 中使用该格式

【讨论】:

    【解决方案2】:

    Closure 编译器现在可作为 JavaScript 应用程序使用。不再需要 Java 依赖

    有几种方法可以与之集成。我已将其作为汇总的一部分完成

    例如:

    import rollup from 'rollup';
    import closure from 'rollup-plugin-closure-compiler-js';
    
    export default {
      entry: 'index.js',
      dest: 'dist/build.js',
      format: 'iife',
      plugins: [
        closure({
          languageIn: 'ECMASCRIPT6',
          languageOut: 'ECMASCRIPT5',
          compilationLevel: 'ADVANCED',
          warningLevel: 'VERBOSE',
          externs: [{src:`
                          var jQuery;
                          jQuery.fadeIn = function() {};  
    
                          var ko;  
                          ko.applyBindings = function(vm) {};
                          ko.computed = function(a,b) {};
                          ko.observable = function(a) {};
                   `}],
        })
      ]
    }
    

    更多信息在这里:

    http://www.syntaxsuccess.com/viewarticle/using-the-closure-compiler---advanced_optimizations

    【讨论】:

      【解决方案3】:

      “Page Speed 1.4 Beta 集成了 Closure Compiler 以自动缩小 JavaScript 文件。但是,您需要分别下载并安装 Page Speed Beta 和 Closure Compiler。”

      http://code.google.com/speed/page-speed/download.html

      我还没有安装此版本,但我相当肯定 Page Speed 会在其优化建议中为您提供已编译的代码。

      【讨论】:

        【解决方案4】:

        Closure Compiler 似乎集成了 Page Speed only for Windows

        【讨论】:

          【解决方案5】:

          在 PHP 中使用闭包编译器(通过 CURL 托管或通过命令行工具在本地)

          http://bohuco.net/blog/2009/11/google-closure-compiler-with-php/

          【讨论】:

            【解决方案6】:

            如果你需要编译多个js文件或者你想简化编译过程,你可以使用kjscompiler:https://github.com/knyga/kjscompiler(基于google闭包编译器)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2010-12-14
              • 2011-01-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多