第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文件有什么问题?如果有人能提供帮助,我将不胜感激。谷歌关闭的文档和教程不是很简单。
答案 0 :(得分:1)
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
定义。
有关闭包库的更高级用法,您需要正确使用goog.require
调用并使用Closure-builder来解决依赖关系。
答案 1 :(得分:0)
在test.html中,您是否尝试过更换:
<script>
var v = new Helloworld();
</script>
与
<script>
var Helloworld = goog.getObjectByName('Helloworld');
var v = new Helloworld();
</script>