编码基础
客户端代码
客户端代码 描述了如何创建一个客户端应用程序的入口点(用户启动应用程序时执行的代码)。当您的应用程序通过网络发送给用户时,它会在用户的 Web 浏览器中以 JavaScript 形式运行。
与 Java 语言和库的兼容性
与 Java 语言和库的兼容性 描述了 GWT 与核心 Java 语言之间语法和语义的差异。请记住,您的 GWT 应用程序的目标语言最终是 JavaScript,因此在 开发模式、超级开发模式 和 生产 模式下运行应用程序时,会存在一些差异。
历史
历史 描述了如何将 Ajax 应用程序与浏览器历史记录集成。Ajax 应用程序有时无法满足用户的期望,因为它们与浏览器的交互方式与静态网页不同。当 Ajax 应用程序没有与浏览器历史记录集成时,用户经常会感到明显且沮丧。例如,用户希望浏览器能够使用后退和前进操作导航回以前访问过的页面。由于 Ajax 应用程序通常是一个运行 JavaScript 逻辑的单个页面,而不是一系列页面,因此浏览器历史记录需要来自应用程序的帮助才能支持这种情况。GWT 的历史机制使历史记录支持变得相当简单。
数字和日期格式化
数字和日期格式化 描述了如何在 GWT 中格式化数字和日期。GWT 并没有完全模拟日期和数字格式化类(例如 java.text.DateFormat、java.text.DecimalFormat、java.text.NumberFormat 和 java.TimeFormat)。相反,com.google.gwt.i18n.client.NumberFormat 和 com.google.gwt.i18n.client.DateTimeFormat 提供了 JRE 类功能的一个子集。标准 Java 类和 GWT 类之间的主要区别在于在运行时切换不同语言环境以格式化日期和数字的能力。在 GWT 中,使用延迟绑定机制仅将当前语言环境所需的逻辑加载到应用程序中。
编程延迟逻辑
编程延迟逻辑 描述了如何使用三个类推迟运行代码,直到稍后:Timer、DeferredCommand 和 IncrementalCommand。这对于安排未来某个时间的活动、定期查询服务器或更新界面、将必须等待其他初始化完成才能进行的工作排队,以及执行大量计算很有用。
使用 JSON
许多 AJAX 应用程序开发人员已将 JSON 作为服务器通信的首选数据格式。它是一种相对简单的格式,基于 JavaScript 的对象文字表示法。 使用 JSON 解释了如何在应用程序中使用 JSON 编码数据,GWT 包含用于解析和操作 JSON 对象的类,以及非常有用且优雅的 JavaScript 覆盖类型概念。
使用 XML
可扩展标记语言 (XML) 是一种现代 Web 应用程序中常用的数据格式。XML 使用自定义标签来描述数据,并以纯文本形式进行编码,使其既灵活又易于使用。 使用 XML 描述了 GWT 类库中为处理 XML 数据而设计的类型集。
JavaScript 本地接口 (JSNI)
通常,您需要将 GWT 与现有的手写 JavaScript 或第三方 JavaScript 库集成。偶尔,您可能需要访问 GWT 类 API 未公开的低级浏览器功能。GWT 的 JavaScript 本地接口 (JSNI) 功能可以通过允许您将 JavaScript 直接集成到应用程序的 Java 源代码中来解决这两个问题。
JavaScript 覆盖类型
假设您正在愉快地使用 JSNI 从 GWT 模块内部调用一些手写 JavaScript 代码。它运行良好,但 JSNI 仅在单个方法级别起作用。某些集成场景需要您更深入地交织 JavaScript 和 Java 对象(DOM 和 JSON 编程是两个很好的例子),因此我们真正想要的是一种方法,让我们能够从 Java 源代码中直接与 JavaScript 对象进行交互。换句话说,我们想要在编码时看起来像 Java 对象的 JavaScript 对象。
JavaScript 覆盖类型 使将整个 JavaScript 对象系列集成到 GWT 项目中变得容易。此技术有很多好处,包括即使您正在使用无类型的 JavaScript 对象,也能使用 Java IDE 的代码完成和重构功能。
延迟绑定
延迟绑定 是 GWT 编译器的一项功能,它通过在编译时生成多个版本的代码来工作,其中只有一个版本需要在运行时由特定客户端在引导时加载。每个版本都是针对每个浏览器生成的,以及应用程序定义或使用的任何其他轴。例如,如果您要使用 GWT 的国际化模块对应用程序进行国际化,那么 GWT 编译器将针对每个浏览器环境生成应用程序的各种版本,例如“Firefox 英文版”、“Firefox 法语版”、“Internet Explorer 英文版”等等。因此,部署的 JavaScript 代码非常紧凑,并且比手写 JavaScript 下载速度更快,因为其中只包含特定浏览器环境所需的代码和资源。