javascript - 如何使用带有导出符号的谷歌闭包?

标签 javascript export google-closure-compiler google-closure

第 1 步:创建一个 test.js:

var Helloworld = function()
{
console.log("Hi..");
}

goog.exportSymbol('Helloworld', Helloworld);

第2步:我使用闭包编译器编译上面的javascript文件:

java -jar ../compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS --js test.js   --js_output_file test_out.js

可以看到test_out.js的内容:

goog.a("Helloworld",function(){console.log("Hi..")});'

我不知道“goog.a”是什么意思。

第 3 步:创建一个 test.html:

<html>
<head><title>Hello World</title></head>
<body>
<script src="closure-library/closure/goog/base.js"></script>
<script src="test_out.js"></script>
 <script>
    var v = new Helloworld();
  </script>
</body>
</html>

第 4 步:在浏览器中加载 html。

但是,找不到 Helloworld 符号。我的编译 javascript 文件的脚本有什么问题?如果有人可以提供帮助,我将不胜感激。 google关闭的文档和教程不是很简单。

最佳答案

Closure-library 旨在与您的源代码一起编译,以充分利用死代码消除。您缺少的是编译命令中正确的库源文件:

java -jar ../compiler.jar --compilation_level ADVANCED_OPTIMIZATIONS
    --js test.js --js closure-library/base.js
    --js_output_file test_out.js

上面的命令只会包含闭包库的base.js文件中定义的函数(其中包括goog.exportSymbol)。编译后,您的 test_out.js 将包含 goog.exportSymbol 的已编译定义。

要更高级地使用closure-library,您需要正确使用goog.require调用并使用Closure-builder解决依赖关系。

关于javascript - 如何使用带有导出符号的谷歌闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18435007/

相关文章:

javascript - Django:AJAX请求后加载模板

javascript - 如何一键运行所有功能

javascript - Google Closure 在高级模式下调用未定义的函数

javascript - ":optimizations :advanced"的全局变量/函数过多

javascript - 使用 Javascript 中的 WP-REST-API 通过自定义字段检索帖子

javascript - 来自 JSON 的 Highcharts 堆积柱形图未绘制正确的值

Oracle 导出所有序列 DDL? (11克)

ios - 使用 Xcode 8.3.2 为 AdHoc IPA 导出指定配置文件

eclipse - 如何导出 Subclipse SVN 存储库 - Eclipse Juno、Subclipse 1.8.16

javascript - 为什么谷歌闭包编译不在变量中保留重复使用的索引?