《Ext JS实战》——1.6 测试

1.6 测试

在这个练习中,要创建一个Ext JS的Window,然后通过Ajax请求一个HTML文件,并把文件的内容展现在Window的内容区域。现在从创建主HTML文件开始,然后是所有的JavaScript文件。

代码1-1 创建helloWorld.html

代码1-1是典型的只有Ext配置的HTML标记,包含了合并版的CSS文件,ext-all-css1和两个必须的JavaScript文件ext-base.js和ext-all-debug.js2。接着,又创建了一个JavaScript块3,这里对重要的Ext.BLANK_IMAGE_URL属性进行了设置。最后,把很快就要创建的helloWorld.js文件包括进来4。

你可能还没注意到,对于框架的引用使用的是绝对路径的方式。如果路径不一样,一定要改过来。接下来,要创建helloWorld.js这个文件,这个文件会包含主要的JavaScript代码。

代码1-2 创建helloWorld.js

在代码1-2中,创建了buildWindow函数,这个函数又被传递给Ext.onReady以备稍后执行。在buildWindow中,创建了一个新的Ext.Window实例1,并通过win引用这个实例。给Ext.Window传递了一个配置对象,这个对象中包括了初始化窗口实例所需要的一切配置属性。

在这个配置对象中,把id设为'myWindow',以后Ext.getCmp方法就可以根据这个id找到这个窗口。接着又指定了这个窗口的标题,标题会以蓝色字体显示在窗口的最顶部区域,也就是叫做标题栏的地方。接下来,指定了窗口的高度和宽度。然后把layout设置成'fit',这可以保证不管这个窗口中放的是什么内容,这个内容都会填满窗口的内容空间。我们又继续指定了一个autoLoad配置对象2,这个对象通知窗口自动取出一个HTML片段内容(通过url属性指定的),如果里面有JavaScript,还会运行这些代码(通过scripts:true指定)。

HTML片段(HTML fragments)
所谓HTML片段就是没有用head和body标签包围起来的HTML,因此不会被认为是一个完整的页面。Ext JS之所以要加载HTML片段,是因为一个页面中只能有一个HEAD和BODY标签。1
完成了Ext.Window实例的配置对象之后,接下来,又调用了win.show3,这个方法是渲染窗口。这些就是对buildWindow内容的总结。最后一件事就是调用Ext.onReady4并把buildWindow方法传进去。这可以保证在正确的buildWindow,也就是在DOM完全就绪之后并且在获取任何图像之前执行。下面看看窗口是怎么渲染的。在浏览器打开helloWorld.html。如果之前的所有代码都正确,应该看到图1-19所示的一个窗口,在“Loading…”文本旁边会有一个转动的图标,这个图标其实是加载指示符,表示数据还在加载中。

为什么会看到这个消息呢?这是因为还没有sayHi.html页面,在autoLoad配置对象的url属性中指向的就是这个页面。事实上,这里是在让Ext JS加载某些还不存在东西。接下来,就要处理这个sayHi.html了,下面会在这个文件中建一个HTML片段,其中还会包含一些JavaScript。

代码1-3 创建sayHi.html

在代码1-3中,创建的是一个带有HTML片段的文件sayHi.html。这个片段中有一个DIV1,“Hello world”消息就放在这里。接着,又用了一个script标签和一些JavaScript代码,浏览器加载这个片段时就会运行这段代码。在这部分代码中,创建了一个名为highlightWindow的新函数2,这个函数会延迟一秒执行。在函数内部,对窗口的内容区域执行了一个highlight的效果。highlightWindow的执行延迟一秒3。这个方法是这么工作的。

首先通过使用一个名为Ext.getCmp的辅助方法取得在helloWorld.js文件中创建的Window的引用,Ext.getCmp根据id查找Ext JS组件。在创建这个窗口时给它的id是'myWindow',传给Ext.getCmp的就是这个id。之所以能够这么做,是因为所有的组件(部件)在初始化时都会用ComponentMgr进行注册。在程序的任何地方都可以通过Ext.getCmp根据id得到引用。

在得到了窗口的引用之后,又用窗口的body属性得到了窗口内容区的引用,winBody。然后调用它的高亮方法,这个方法会对元素进行高亮操作(从黄色渐变成白色)。这些内容就是对highlightWindow方法的总结。

这段JavaScript代码块所做的最后一件事就是调用highlightWindow.defer使用的值是1000,这会让highlightWindow的执行延迟1000毫秒(或者1秒)。

如果说从来没听说过JavaScript中有个defer,不要紧,因为这是个Ext引入的方法。Ext JS利用了JavaScript的可扩展性对一些核心的语言类,例如Array、Date、Function、Number、String添加了许多好用的方法。这就意味着这些类的每个实例都有了新的好用的方法。就这个例子而言,用到的是defer,它是Function的一个扩展。如果经验足够丰富,可能会问,“为什么不用setTimeout呢?”。第一个原因是因为更简单,调用任何方法的.defer,然后传入一个时间就可以延迟其执行。第二个原因是因为可以对被延迟执行的方法执行的作用域进行控制,并传入定制的参数,这也是setTimeout所欠缺的。

现在就可以结束这个HTML片段了,Window也能取到这个片段了。刷新helloWorld.html后,可以看到如图1-20所示的内容。

图1-20 Ext JS Window加载 HTML片段(左)对内容区使用高亮效果

如果一切正确,看到的结果也应该与图1-20一样,首先内容区域会用HTML片段更新(左),经过1秒钟之后,窗口的内容区域会用黄色高亮显示(右)。很酷吧?建议你花些时间调整一个这个例子,例如用API修改高亮效果的颜色。提示一下:从Ext JS > Fx下载有效果的列表以及对应的参数。

时间: 2025-01-17 23:49:25

《Ext JS实战》——1.6 测试的相关文章

《Ext JS实战》——第1章 独特的框架 1.1 认识Ext JS

第一部分 Ext JS介绍 欢迎阅读<Ext JS实战>,本书是对Ext JS世界的深度之旅.在本书中,不仅要学习如何利用Ext JS框架完成各种任务,还会学习构成框架的各种组件和部件之间的差异. 通过第1章到第3章的学习,我们能够对框架的基础部分有必要的理解.我们的旅途从第1章正式起航,在第1章会学习框架的基础知识.第2章是"热身"章,会了解一些能让应用程序正确运行的关键要素.第3章会涉及框架的一些内部机制,例如组件模型和容器模型. 学完这一部分后,就可以探索Ext JS

《Ext JS实战》——1.5 下载并配置

1.5 下载并配置 尽管下载Ext JS的过程简单,可配置一个使用Ext JS的页面却不像在HTML中引用一个文件那么简单.除了配置之外,还得了解目录的层级关系,要知道都有哪些目录以及它们的用途. 我们要做的第一件事就是得到源代码. 下载的SDK是个ZIP文件,差不多有6MB大小.后面会解释为什么这些文件会这么大.现在,把这个文件解压到一个用于专门保存JavaScript的地方.要使用Ajax,需要有一个Web服务器.我在自己的计算机上一般会配置一个本地的Apache,它是个免费的而且跨平台的W

《Ext JS实战》——导读

**前言**Ext(读作Eee-ecks-tee)JS 3.0是一个功能强大的UI框架,可以构造丰富.健壮的跨浏览器应用,它最初是由Jack Slocum在2006年开发出来的.从那时起,Ext JS就经历了一个爆炸性的增长,因为它满足了Web开发人员对于一个真正的.有完整的组件和事件模型的UI框架的需要.这也使得它在竞争激烈的Web 2.0库领域独树一帜. 本书会带你对框架进行深度探索,会通过大大小小的例子演示Ext JS的高效使用方法.而且本书还使用了许多手绘的插图帮你加快学习的速度. Ex

《Ext JS实战》——2.2 Ext.Element类

2.2 Ext.Element类 所有使用了JavaScript的Web应用程序都会围绕着一个核心,也就是HTML的Element.JavaScript对DOM节点的访问能力让我们能够随意.灵活地操作DOM,包括增加.删除.美化或者修改文档中的任意节点内容.通过ID引用一个DOM节点的传统方法是: 这个getElementById方法很好用,可以执行一些类似改变innerHTML的内容,或者美化和配置一个CSS类这样的基本任务.不过要是想对该节点做更多的事情,例如管理它的事件,在有鼠标点击时应用

《Ext JS实战》——1.3 框架概览

1.3 框架概览 Ext JS作为一个框架,不仅提供了UI部件,还提供了许多其他特性.这些内容可以分成6大部分,即Ext JS核心.UI组件.Web远程调用.数据服务.拖放以及通用工具.图1-4说明了这6个部分. 图1-4 Ext JS的6大部分,即Ext JS核心.UI组件.Web远程调用.数据服务.拖放及通用工具 了解这6大部分之间的区别以及各自的用途,有助于开发应用程序时划分边界,因此下面先讨论这6个部分. Ext JS核心 第一个功能集就是Ext JS核心,这一部分包括了许多基本功能,包

《Ext JS实战》——第2章 基础回顾 2.1 正确的开始

第2章 基础回顾 在编写程序时,我经常形象思维,这会有助于在头脑中形成与概念对应的等价物.例如,我喜欢把启动一个应用程序想象成航天飞机的发射,因为二者都可能成功或者无法挽回地失败.要想操作DOM,最重要的一点是要知道应该在什么时候启动JavaScript代码.在这一章里,会学习如何用Ext运行JavaScript代码,而且还得保证这些代码在每个浏览器上都能在最恰当的时机初始化.然后再讨论如何通过Ext.Element操作DOM. 你肯定也知道,对DOM的操作是程序员花费时间最多的编码任务.不管是

《Ext JS实战》——1.4 Ext JS 3.0的新特性

1.4 Ext JS 3.0的新特性 Ext JS 2.0中引入的一些变化是颠覆性的,这就导致从级到2.0相当困难.这主要是因为这一版引入了一个更加现代的布局管理器以及一个崭新的.健壮的组件层次,许多Ext JS 1.x的代码都会因此而崩溃.值得庆幸的是,由于Ext JS 2.0的良好的工艺设计,从Ext JS 2.0到3.0的移植就非常容易了.尽管Ext JS 3.0新增的内容并不怎么神奇,不过最新的版本还是可圈可点的,有些新增的特性还是值得讨论的. 1.4.1 Ext JS通过Direct完

《Ext JS实战》——1.2 需要知道的事项

1.2 需要知道的事项 并不是说必须先是一个Web应用开发专家,然后才能用Ext JS进行开发.但是对于开发人员而言,在使用这个框架开始编写代码之前还是有一些核心的内容需要知道. 第一个技能就是对HTML(超文本标记语言)和CSS(层叠样式表)要有最基本的了解.对这些技术有实际经验尤为重要,因为Ext JS和其他JavaScript UI函数库一样,也是用HTML和CSS来构建它的UI控件和小挂件的.尽管这些东西看起来很像典型的现代操作系统的控件,但最后它们都落到浏览器中的HTML和CSS. 因

《Ext JS实战》——1.7 小结

1.7 小结 通过这部分对于Ext JS的介绍,已经知道了如何用它构建健壮的Web应用程序,或者和现有的Web站点集成.也知道如何和市面上的其他流行框架相权衡,也知道它是唯一基于UI的框架,包含类似Component.Container.Layout以UI为中心的支持类.记住Ext JS可以放在jQuery.Prototype和YUI的上面. 本章对框架所提供的一些核心UI组件进行了一些探讨,并展示了这些内置的部件为快速应用开发带来效果.此外,还谈到了Ext JS 3.0引入的一些变化,例如Fl