我的Closure环境在我的开发环境中运行良好。在一个新的文件夹&但是,文件不起作用。
例如,参加此测试脚本:
goog.require('goog.dom');
console.log(goog);
console.log(goog.dom);
goog.dom.getElement('logout').innerHTML = "Heck";
这就是全部,加上HTML中的base.js
。
第一个console.log
显示一个包含所有正确内容的对象。所有文件也都加载到DOM中。
然而,第二个控制台日志显示undefined
,因此最后一行不起作用(显然)。 Chrome控制台错误为Uncaught TypeError: Cannot call method 'getElement' of undefined
。
到底发生了什么事?如果我尝试XhrIo
,它也是一样的。它没有在goog
对象上找到方法。
感谢。
答案 0 :(得分:3)
注意:不要将goog.require()语句放在同一个脚本标记中 作为使用goog.required函数或代码的代码的入口点 类。 goog.require()调用将代码添加到文档之后 包含调用的脚本标记。
所以
<script>
goog.require('goog.dom');
console.log(goog.dom);
</script>
打印undefined
。但
<script>
goog.require('goog.dom');
</script>
<script>
console.log(goog.dom);
</script>
或
<script>
goog.require('goog.dom');
addEventListener('load', function() {
console.log(goog.dom);
});
</script>
打印一个Object。
仅供参考,还有其他可能的工作流程。例如,closurebuilder.py脚本可以帮助提前加载所有必需的文件。