本 Hello World 练习介绍了在网页上使用 Closure 库的过程。要完成此练习,您需要对 JavaScript 以及 Git 客户端和 Node.js 有一定的了解。
您好!Closure
如需开始使用 Closure 库,请按以下步骤操作,在一个简单的网页中使用 Closure JavaScript 函数:
第 1 步:下载并设置 Closure 库
通过在命令行中执行以下命令,从 Git 代码库下载 Closure 库:
git clone https://github.com/google/closure-library
您需要一个 Git 客户端才能执行此命令,但您可能有一个。尝试运行该命令,如果不起作用,请下载并安装 Git 客户端。
执行此命令后,您应该会看到一个名为 closure-library
的目录,其中包含 Closure 库代码。
在继续之前,必须初始化 Closure 库代码库。本练习的部分内容依赖于一个名为 deps.js
的文件,系统会生成此文件(因此,它在首次签出时不会包含在代码库中)。如需生成此文件,请输入以下目录并运行 npm install
(npm
与 Node.js 捆绑在一起):
cd closure-library npm install
第 2 步:创建使用 Closure 库的 JavaScript 文件
将以下 JavaScript 保存在名为 hello.js
的文件中。将此文件放在 closure-library
目录旁边。
goog.require('goog.dom'); goog.require('goog.dom.TagName'); function sayHi() { var newHeader = goog.dom.createDom(goog.dom.TagName.H1, {'style': 'background-color:#EEE'}, 'Hello world!'); goog.dom.appendChild(document.body, newHeader); }
第 3 步:创建 HTML 文件
将以下 HTML 保存在名为 hello.html
的文件中。将此文件放在 closure-library
目录和 hello.js
文件旁边。
<html> <head> <script src="closure-library/closure/goog/base.js"></script> <script src="hello.js"></script> </head> <body onload="sayHi()"> </body> </html>
第 4 步:向 Closure 库打招呼
在浏览器中打开 HTML 文件。您应该会看到“Hello world!”字样:
如何运作?
hello.js
JavaScript 使用两个未定义的函数:goog.dom.createDom()
和 goog.dom.appendChild()
。这些函数来自哪里?
这些函数在您在第 1 步中下载到的 closure-library/dom/dom.js
文件中的 Closure 库中定义。
为了利用这些函数,该示例进行了以下两项操作:
base.js
文件定义了 goog.require()
函数。函数调用 goog.require('goog.dom')
会加载 JavaScript 文件,这些文件用于定义 goog.dom
命名空间中的函数,以及这些函数所需的 Closure 库中的其他文件。
Closure 库通过为每个文档动态添加 Closure 库文件的脚本标记来加载这些文件。例如,语句 goog.require('goog.dom')
会将以下标记添加到文档中,其中 path-to-closure
是从 HTML 文件到包含 base.js
的目录的路径:
<script src="path-to-closure/dom/dom.js"></script>
通常,单个 goog.require()
语句仅会加载 Closure 库代码库的一小部分。
注意:请勿将 goog.require()
语句放在使用 goog.require
d 函数或类代码的入口点所在的脚本标记中。goog.require()
调用会将代码添加到包含调用的脚本标记之后的文档中。例如,以下代码可以正常运行:
<script src="closure-library/closure/goog/base.js"></script> <script> goog.require('goog.dom'); </script> <script> var newHeader = goog.dom.createDom(goog.dom.TagName.H1); </script>
goog.require()
调用会将 goog.dom.createDom()
的代码添加到包含 var newHeader =
goog.dom.createDom(goog.dom.TagName.H1)
行的脚本标记之前,且紧邻该标记。
相反,以下代码会产生错误:
<script src="closure-library/closure/goog/base.js"></script> <script> // DON'T DO THIS. goog.require('goog.dom'); var newHeader = goog.dom.createDom(goog.dom.TagName.H1); </script>
此 goog.require()
调用会在脚本标记中为 goog.dom.createDom()
添加代码,直到对 goog.dom.createDom()
进行调用之后,系统才会解析该代码。
添加 base.js
不是添加 Closure 库代码的唯一方法,但这是最简单的入门方式。不过,无论您如何获取 Closure 库代码,都要始终使用 goog.require()
声明所需的 Closure 库部分。
后续操作
此示例展示了一种仅获取所需 Closure 库部分的方法:将 base.js
添加到网页中并调用其函数 goog.require()
。
对于更高级的用法,建议使用 Closure Compiler 将 JavaScript 缩减为单个文件。