Web Front End

Google Closure – goog.require()

在使用 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