`

从DOM 看gwt

    博客分类:
  • GWT
阅读更多
从DOM 看gwt




序言:这篇文章首先介绍DOM(Document Object Model),然后进入GWT的DOM 对象主题。进而说明gwt构建于"one page application"之上与传统Web构建以及带UI 的Application的联系与区别。然后重点转移到我们能够利用DOM做点什么,最后分析总结:DOM对组件设计人员、组件使用人员,美工设计师 (deal wtih Image && CSS)引起的微妙变化。


  • What is the DOM?
"The W3C Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document."

The W3C DOM provides a standard set of objects for HTML and XML documents, and a standard interface for accessing and manipulating them.

The W3C DOM is separated into different parts (Core, XML, and HTML) and different levels (DOM Level 1/2/3):

Core DOM - defines a standard set of objects for any structured document
XML DOM - defines a standard set of objects for XML documents
HTML DOM - defines a standard set of objects for HTML documents

更多参考资料:www.w3schools.com/dom/default.asp

  • How about the gwt DOM?
It's a class.This class provides a set of static methods that allow you to manipulate the browser's Document Object Model (DOM). It contains methods for manipulating both elements and events.
简单说,它就是把HTML DOM 封装成了Java 对象, 进而可以处理html 元素和事件。

  • gwt==one page application?
是的,gwt是构建于one page application之上.这里暂不讨论gwt这样设计的原委。有人就会怀疑,既然这样,还能指望他做出复杂的应用? 答案是肯定的。

首先,它和我们传统的做法(web or application)是一样的,gwt是从the host page开始的(它也是the only page),和我们的welcome page一样,或者 application(mainForm or loginEntry)一样。From a entrance into the world.

其次,gwt依赖DOM动态创建web组件。熟悉DOM的应该清楚,一个Element里面可以含有一个另一个异常复杂的Element,比如 Iframe,InnerHtml。有过Application UI 编程经验的,也应该知道 a container 能放入一个复杂的control, 或 another container 。

所以,尽管看起来gwt是one page application,但你要做到多页的效果其实也是不难的。

  • What can we do by using DOM?
答案前面就说了,我们可以利用DOM处理 element and its events.小到设置元素属性1),大到设计组件2)...下面举例说明.


1)
java 代码
  1. Image logo = new Image(aPATH);
  2. DOM.setElementProperty(logo.getElement(), HTML_ID_TOKEN, HTML_LOGO_IDENTIFIER);


2)
java 代码
  1. import com.google.gwt.user.client.DOM;
  2. import com.google.gwt.user.client.Element;
  3. import com.google.gwt.user.client.ui.FlowPanel;
  4. /*
  5. * The GroupBoxPanel is extend the flow panel and add fieldset and legend tags around the panel element.
  6. * Add Control in the container,the Align is default as flow.
  7. some issue here
  8. *
  9. */
  10. public class GroupBoxPanel extends FlowPanel {
  11. private Element legend;
  12. public GroupBoxPanel() {
  13. Element fieldset = DOM.createFieldSet();
  14. this.legend = DOM.createLegend();
  15. DOM.appendChild(fieldset, legend);
  16. setElement(fieldset);
  17. }
  18. public GroupBoxPanel(String caption) {
  19. this();
  20. setCaption(caption);
  21. }
  22. public String getCaption() {
  23. return DOM.getInnerText(this.legend);
  24. }
  25. public void setCaption(String caption) {
  26. DOM.setInnerHTML(this.legend, caption);
  27. }
  28. }


从上面的例子,我们可以真正领略组件式编程的威力.


  • confuse,scare?
利用DOM进行扩展,多少会使得一些人迷惑或恐慌。gwt不是宣称简单即美么? 是的.你熟悉HTML DOM && gwt DOM,你就可以构造出复杂,实用的组件。你熟悉the basic gwt widget library,你也可以构造出复杂应用。对于美工呢? 基于one page application的设计更方便美工设计images and css. 至少可以使得美工设计师不会再从一个页面跳到另一个页面去看html source(推荐使用firefox+firebug).方便了对界面的整体把握,也方便其对业务流程的了解(这里不再说明这些人员间的沟通)。总之,DOM 使得人尽其才,物尽其用,所司所长。


如果文章提到的相关环节有问题,请通知我
分享到:
评论
1 楼 鹤惊昆仑 2007-11-04  
有意思

相关推荐

    GWT快速开发.pdf

    2. 从左侧列表中选择“Google”→“GWT Project”,点击“Next”。 3. 输入项目名称,选择适当的项目类型(如“Basic GWT Application”),点击“Finish”。 ### 第一个GWT程序:“Hello! GWT!” 下面展示一个...

    gwt 2.1.0 工具下载

    7. **性能优化**:GWT 2.1.0对性能进行了大量优化,包括更高效的代码压缩、资源加载优化以及对DOM操作的改进,使得Web应用运行更快。 8. **开发工具**:GWT SDK包含了开发所需的全部工具,如开发环境集成(Eclipse...

    GWT技术文档详细解说

    - **DOM操作**:GWT封装了对DOM的操作,提供了更安全、易用的API。 - **编译时代码分割**:GWT能够根据需要只加载部分应用代码,减小初始加载量。 总的来说,GWT为Java开发者提供了一个高效、便捷的Web开发平台,...

    java教程GWT开发

    三、不同风格的 Web 开发:讨论一些典型的 GWT 开发者可能面对的 web 开发任务,例如使用构建文件自动化开发和发布步骤,使用 Firefox 的 DOM Inspector 来观察由 GWT 应用程序生成的 HTML 等。 四、服务功能:介绍...

    GWT中文教程(入门进阶)

    4. **事件处理**:GWT中的事件模型基于DOM事件,你可以为Widget绑定事件监听器,处理用户交互。 5. **CSS样式**:GWT支持内联CSS和外部CSS样式表,可以通过Java代码动态修改样式,实现富客户端界面的定制。 6. **...

    gwt教程

    2. **丰富的UI组件**:GWT提供了大量的UI控件,如按钮、文本框、表格等,这些组件都是基于标准的W3C DOM元素构建的,可以方便地进行样式定制。 3. **异步通信(RPC)**:GWT支持异步远程过程调用(RPC),使得...

    gwt 获取前台所有input 标签.docx

    除了上述方法,GWT还提供了`DOM`类,它包含了更多的DOM操作方法。例如,如果想要获取特定ID的输入元素,可以使用`DOM.getElementById`。同时,GWT的`Widget`体系也支持更加面向对象的编程方式,比如`FormPanel`和`...

    GWT与Spring整合经典文章

    Ext GWT利用JavaScript操作DOM,实现了页面的动态生成和更新,通过AJAX异步通信方式,提升了用户体验,减少了服务器通信负担。 Spring框架是一个轻量级的Java企业级应用框架,它提倡依赖注入(Dependency Injection...

    gwt 揭秘 源码

    - **编译阶段**:GWT编译器将Java代码转换为优化过的JavaScript和HTML,包括对DOM操作、事件处理和异步通信的实现。 - **部署阶段**:将编译结果部署到服务器,用户通过浏览器访问,加载优化后的JavaScript代码。 ...

    GWT入门教程

    在这个方法中,你可以添加小部件到DOM树,从而展示你的界面。 ### 3. GWT的UI组件和布局管理 **3.1 Widget库** GWT提供了丰富的Widget库,包括按钮、文本框、面板等。例如,你可以使用`Button`、`TextBox`、`Label...

    gwt开发问题

    缺点是,如果需要高度定制化的菜单样式或行为,可能需要更多的代码编写和DOM操作,因为GWT的组件并不总是能够完全符合特定的设计要求。 ```java class ContextMenuGwt extends Composite { // ...省略部分代码... ...

    GWT学习文档

    - **从Host Model到Web Model**:GWT提供了一种机制,允许Java代码与DOM元素交互,实现对网页的直接操作。 - **使用数据源**:GWT支持通过GWT-RPC或RequestFactory等方式与服务器进行异步通信,获取和更新数据。 ...

    GWT2.3_API.zip_GWT 2.3.0 api_Validator gwt2.3_gwt api chm_gwt ap

    在GWT 2.3.0的Widget库中,开发者可以找到各种UI元素,如Button、TextBox、DatePicker等,这些都封装了JavaScript原生的DOM元素,提供了Java式的编程接口。事件处理是GWT中的另一个关键部分,它允许开发者响应用户的...

    gwt2.0版本

    7. **事件处理**:GWT的事件模型与DOM事件模型相融合,使得处理用户交互更加直观和灵活。 8. **拖放功能**:GWT 2.0引入了拖放支持,使得开发者可以轻松实现拖放操作,增强了应用程序的交互性。 9. **兼容性**:...

    GWT技术介绍

    - **DOM (Document Object Model)**:用于动态地更新网页内容。 Ajax的核心在于`XmlHttpRequest`对象,它使得JavaScript能够向服务器发送异步请求并在不重新加载整个页面的情况下更新部分页面内容,从而极大地改善...

    GWT SDK 2.5.1

    3. **运行时库**:GWT SDK包含了运行时所需的JavaScript库,这些库实现了Java标准库的部分功能,如集合、线程、XML处理等,以及一些特定于Web的API,如DOM操作和AJAX通信。 4. **模拟器**:GWT SDK提供了一个基于...

    YUI 和GWT 优缺点搜集

    User Interface Library)和GWT(Google Web Toolkit)都是曾经备受推崇的JavaScript库和框架,它们在不同场景下有着各自的优势和不足。让我们深入探讨一下这两个工具的优缺点。 首先,YUI是由雅虎公司开发的一个...

    Google-Web-Toolkit (GWT)

    GWT还包括了一个专门的API用于操作DOM,这使得开发者可以直接在Java代码中对DOM元素进行操作,而无需深入了解底层的JavaScript代码。 ##### 3. Java到JavaScript编译器 GWT的一个核心组成部分是它的编译器,该...

    GWT 2.3.0 API DOC chm 版

    9. **Client-Side Libraries**: GWT集成了许多JavaScript库,如DOM操作库、动画库等,使得开发者可以利用这些库轻松地构建复杂功能。 10. **Internationalization (i18n)**: GWT支持多语言,允许开发者创建可国际化...

    GWT学习手册,由本人整理打包

    **GWT中级教程.doc** 可能涵盖了GWT的基础知识,如模块系统、事件处理、DOM操作、数据绑定等。中级教程可能还会讲解到GWT的异步通信机制——`com.google.gwt.user.client.rpc.RemoteService` 和 `...

Global site tag (gtag.js) - Google Analytics