在使用 Google Closure Library 时,要注意一点。 goog.require()
所请求的内容,不能被同一个 script 标签内的 js 代码所使用,例如下面这种做法就是错误的。
<script src="closure-library/closure/goog/base.js"></script>
<script>
// 不要这样写
goog.require('goog.dom');
var newHeader = goog.dom.createDom('h1');
</script>
如果你这样做,会有一个 cannot read property 'xxx' of undefined
类似的错误。除非 goog.dom.createDom() 在此前已经被请求,不然是无法使用它的。 正确的做法是这样:
<script src="closure-library/closure/goog/base.js"></script>
<script>
goog.require('goog.dom');
</script>
<script>
var newHeader = goog.dom.createDom('h1');
</script>
也可以这样:
goog.require('goog.dom');
function sayHi() {
var newHeader = goog.dom.createDom('h1', {'style': 'background-color:#EEE'},
'Hello world!');
goog.dom.appendChild(document.body, newHeader);
}
这样的话,只需要在其他 script 标签或者文件中调用 sayHi()
函数即可。 参考 Getting Started with the Closure Library