《Ext JS权威指南》——1.4节Ext JS的开发工具的获取、安装与配置介绍

1.4 Ext JS的开发工具的获取、安装与配置介绍

1.4.1 Ext Designer
Ext Designer是一个所见即所得的创建Ext JS界面的工具软件,目前版本是1.2版,支持Ext JS 3.x和4.x版本,可在http://www.sencha.com/products/designer/download/下载试用版本。

  1. 安装
    双击下载文件将看到如图1-6所示的语言选择窗口。

选择简体中文后,单击“OK”按钮后将看到如图1-7所示的设定窗口。

单击“前进”按钮,将看到如图1-8所示的软件授权协议窗口。

选择目录后,连续单击两次“前进”按钮,进入安装过程,安装结束后,将看到如图1-10所示的安装完成窗口。

从主窗口可以看到,主要分为3个区域,左边是组件选择区域,中间是编辑区域,右边是组件树、Store和属性窗口,与我们习惯的开发工具没有区别。

我们尝试制作一个通用的邮件界面。在左边找到Containers面板,把Viewprot拖动到编辑区域,然后设置其layout属性为border。接着找到“Tree/Tree Grid”面板,把“Tree Panel”拖动到Viewport内,然后设置其width属性为200,maxWidth属性为300,region属性为west,勾选split属性。
接着在Containers面板拖动一个Container组件到Viewport内,设置其layout为border。
再在Containers面板内拖动一个Panel组件到Container组件内,设置region属性为south,属性height为100,maxHeight为300,勾选split属性。
最后在Grid面板,拖动一个Grid Panel到Container组件内。
我们将看到如图1-15所示的最终效果。
单击“Preview”按钮,将看到如图1-16所示的预览窗口。
单击“Code”按钮将切换到如图1-17所示的代码显示窗口。
代码分为Class和JSON两种格式。Class格式会把刚才的设计定义为一个扩展,保存到一个脚本文件内,然后通过动态加载或直接使用Script标记引用,再实例化。而JSON格式则可直接使用create方法进行实例化。
总体来说,Ext Designer是一款不错的Ext JS设计工具,尤其是在使用Ext JS MVC应用框架的时候。单个包219美元也不算太贵,值得购买一套,然后找专人负责界面的设计,笔者觉得是物有所值的。

1.4.2 在Visual Studio中实现智能提示
Visual Studio(下面简称VS) 2008年和2010年都有从JS库文件获取智能提示的功能,不过直接使用Ext JS的库文件的话,虽然也有提示,但是不全,应该说是大部分没有。主要原因是VS脚本提示功能是根据原生JavaScript对象的结构读取的,而Ext JS的对象定义与原生JavaScript对象完全不同,因而很难取得其属性和方法。因而,要完整支持Ext JS的智能提示,就必须将Ext JS对象的属性和方法提炼出来,然后组织成一个VS能读懂的JavaScript对象结构,这样就能实现智能提示了。

要将Ext JS对象的属性和方法提取出来不难,从图1-18中DOM树中的Ext对象结构可以看到,只要遍历一次Ext对象就可以取得所有对象的属性和方法。不过,实际上不是那么容易,原因是在Ext JS的对象中,有些是实例,有些是函数形式的对象,对于实例,其属性和方法直接在对象内,而对于函数形式的对象,其属性和方法却是在原型内,因而要区别对待。
还有一个重要问题就是命名空间的问题,如Ext.menu.Item、Ext.data.Store或Ext.layout. container.VBox这些3或4级的类名。采用递归遍历,判断该对象是JavaScript对象还是Ext JS方式定义的对象有难度,因而,最好的方式是使用附录中的类名列表,通过它去遍历对象,这样就简单很多了。在列表中,如果对象是实例,使用Ext的isObject方法,其值会是true,否则,该对象就是函数式对象,需要实例化才能使用,因而属性和方法在原型内,不过这里要注意可能存在静态方法,为了避免遗漏,还得遍历对象本身的属性和方法。
Ext对象本身需要另外加进去,主要原因是它不同于其他对象那样可直接通过对象本身或原型提取属性和方法,需要把在类列表中的类排除出去,这个可通过对象或函数是否存在“$className”属性解决。
还有对象的别名问题,这个可直接从ClassManager对象的maps对象中的alternate-ToName属性中取得,将别名直接指向对象VS就认识了。
最后的问题是如何将对象输出到页面,这个通过encode方法就可以自动转了。

命名空间的问题可通过ns方法解决,它会自动根据类名创建对象,只要别和Ext对象发生冲突就行了。
目标明确后,现在可以开始工作,创建一个名称为VS-Ext.html的文件,然后加入示例1-1所示的代码。
示例1-1 VS-Ext.html文件代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <title>第1章 在Visual Studio中实现智能提示</title>
    <link rel="stylesheet" type="text/css" href="../Ext4/resources/css/ext-all.css"/>
    <script type="text/javascript" src="../Ext4/bootstrap.js"></script>
    <script type="text/javascript" src="class.js"></script>
</head>
<body>
    <script type="text/javascript">
        Ext.onReady(function(){            

            //建立命名管道
            Ext.ns("VS.Ext");

            var processPrototype=function(s,d){
                //处理静态方法
                for(var c in s){
                    if(s.hasOwnProperty(c)){
                        d[c]="";
                    }
                }
                //处理原型
                for(var c in s.prototype){
                    d[c]="";
                }
            }

            //处理实例
            var processInst=function(s,d){
                var i=0;
                for(var c in s){
                    d[c]="";
                }
            }

    //处理Ext对象
    for(var c in Ext){
        if(Ext.hasOwnProperty(c)){
            var p=Ext[c];
            if(Ext.isObject(p)){
                if(!p["$className"]){
    if( ["buildSettings","versions","lastRegisteredVersion"].indexOf(c)>=0 ){
            VS.Ext[c]=p;
                            }
                        }
                    }else if(Ext.isFunction(p)){
                        if(!p["$className"]){
                            VS.Ext[c]="";
                        }
                    }else{
                        VS.Ext[c]="";
                    }
                }
            }

            //枚举对象
            Ext.Array.each(classList,function(classname){
        Ext.ns("VS."+classname);
        var d=classname.split("."),
            sobj=Ext[d[1]],
            dobj=VS.Ext[d[1]];
        if(d.length >= 3){
            sobj=sobj[d[2]],
            dobj=dobj[d[2]];
        }
        if(d.length == 4){
            sobj=sobj[d[3]];
            dobj=dobj[d[3]];
        }
        if(sobj && dobj){
            if(Ext.isObject(sobj)){
                processInst(sobj,dobj);
            }else{
                if(sobj.prototype){
                    processPrototype(sobj,dobj);
                }
            }
        }
    })

var html="Ext="+Ext.encode(VS.Ext)+"<br/>";
//处理别名
for(var c in Ext.ClassManager.maps.alternateToName){
html+=c+"="+Ext.ClassManager.maps.alternateToName[c]+"</br>";
}
    Ext.getBody().dom.innerHTML=html;
})
    </script>
</body>
</html>

代码中,先创建新的命名空间“VS.Ext”,在其内放置对象的属性和方法。
函数processPrototype用于处理非实例的对象,第一个循环主要是遍历静态属性和方法。第二个循环用于遍历原型的属性和方法。
函数processInst用于遍历实例的属性和方法,在这里不能加hasOwnProperty方法检测属性或方法是不是它拥有的,不然会找不到属性和方法,除非是在实例创建后加的属性和方法。
接着处理Ext对象,如果属性指向的是对象,还要排除grid、form等对象干扰,这个要自己查看一下Ext的源代码,做一下处理。
接下来是枚举class.js中的类,先通过ns方法生成类的命名空间,然后根据小数点拆分一下类名,取得源对象和目的对象后根据isObject确认对象是实例还是非实例,进行相应的处理。
最后是把VS对象内的Ext对象和ClassManager对象内的别名对照表转换为文本,输出到页面。
在浏览器中打开页面,将看到一个JSON格式的输出文本,全选该文本,然后复制到一个名称为Ext.js的文件内,这样,通过该文件就可在VS内实现智能提示了。
要使用Ext.js,应首先将文件复制到项目中,然后根据编辑的文件类型采用不同的方法。
如果是单独的脚本(扩展名为js)文件,在脚本文件头部加入以下语句:

/// <reference path="[相对路径]/Ext.js" />
这里一定要注意路径,如果要编辑的脚本文件与Ext.js文件路径相同,语句为:
/// <reference path="Ext.js" />

最简单直接的方法,就是在解决方案资源管理器中把Ext.js文件直接拖动到编辑的脚本文件中,这样会自动生成该语句。
有了该语句后,输入“Ext.”就可以看到如图1-19所示的智能提示了。
如果是HTML文档,只要将Ext.js的引用加入文档就行了,一定要将该文件放在Ext JS库文件的前面,这样才不会影响调试。文件编辑完成后,记得将该引用清除。
1.4.3 Spket
Spket IDE是一个功能强大的JavaScript和XML编辑器,是理想的Ext JS开发工具。不过,有点遗憾的是,它对非商业使用免费,如果是商业使用,则需要购买许可证。
可登录http://spket.com/download.html下载Spket,本书使用的版本是1.6.18。下载的是一个文件名为spket-1.6.18.jar的jar文件,需要Java环境支撑。所以在安装Spket前,需要在机器上安装并运行Java 1.5或更高版本。
Java安装好以后,运行spket-1.6.18.jar文件将看到如图1-20所示的窗口。

单击“Next”按钮将看到如图1-21所示安装类型选择窗口。
在安装类型选择窗口中,可选择作为独立的应用程序安装,还是作为Eclipse的插件安装。不做任何修改,单击“Next”按钮将看到如图1-22所示的安装路径选择窗口。

不修改路径,直接单击“Next”按钮进入如图1-23所示的预备安装窗口。
单击“Install”按钮等待安装完成。最后单击“Finish”按钮完成安装。
在安装目录下允许“spket.exe”文件,即可打开Spket IDE。程序运行后会出现如图1-24所示的工作目录设置窗口。

如果不想每次打开都选择一次工作目录,可把左下角的选择框选上。
进入如图1-25所示的Spket IDE主窗口后,要实现Ext JS的智能提示,需要做一些配置。
在Window菜单下选择Preferences子菜单,在弹出窗口中展开Spket节点,然后选择“JavaScript Profiles”节点,将看到如图1-26所示的设置窗口。单击右边的“New”按钮,在弹出窗口的输入框中输入“Ext JS 4”,单击“OK”按钮关闭窗口。在中间的列表窗口会多出一个“Ext JS 4”的列表项,选择该项,然后单击“Add Library”按钮,在弹出窗口中的下拉列表框中选择“Ext JS”并单击“OK”按钮返回。这时,在“Ext JS 4”列表项下会多出一个

“Ext JS”的子选择项,选择该项并单击“Add File”按钮,在弹出的文件选择窗口中,在Ext JS目录中寻找并选择“ext.jsb2”文件,然后单击“打开”按钮。在“Ext JS”的子选择项下会增加Ext JS的类选择项,将你需要的类选择上,然后选择“Ext JS 4”项,单击“Default”按钮。最后单击“OK”按钮完成配置。
注意 如果找不到ext.jsb2文件(Ext JS4好像以新方法提供,一般情况下没有该文件),也可以使用1.4.2节中生成的Ext.js文件,笔者测试过,效果是一样的。
1.4.4 在Eclipse中实现智能提示
要在Eclipse中实现Ext JS的智能提示,最好的方式是将Spket IDE安装为Eclipse的插件,这样通过Spket就可轻松实现了。具体的配置方法可参考1.4.3小节。

时间: 2024-09-27 20:49:30

《Ext JS权威指南》——1.4节Ext JS的开发工具的获取、安装与配置介绍的相关文章

《Ext JS权威指南》——导读

目 录 前 言第1章 Ext JS 4开发入门1.1 学习Ext JS必需的基础知识 1.2 JSON概述 1.3 Ext JS 4概述1.4 Ext JS的开发工具的获取.安装与配置介绍 1.5 如何获得帮助 1.6 本章小结 第2章 从"Hello World"开始 2.1 获取Ext JS 42.2 配置使用Ext JS库 2.3 编写"Hello World"程序 2.4 关于Ext.onReady2.5 关于Ext.BLANK_IMAGE_URL2.6 关

《Ext JS权威指南》——1.1节学习Ext JS必需的基础知识

1.1 学习Ext JS必需的基础知识 1. JavaScript 嗯,这个还用说吗?Ext JS本来就是一个JavaScript的框架,而且使用Ext JS就需要使用JavaScript语法来开发,需要JavaScript的知识是必然的了.问题的关键是,开发人员对JavaScript知识的掌握也有深浅之分.譬如,我碰到一些开发人员,对JavaScript算是很熟悉了,但是不会JSON,不会直接使用JSON对象,在使用Ext JS的过程中,需要使用JSON对象的时候,居然是通过组装字符串的方式,

《Ext JS权威指南》——2.7节Ext JS 4语法

2.7 Ext JS 4语法 1.配置对象 Ext JS的基本语法就是使用树状的配置对象来定义界面,其格式如下: { config_options1:value1, config_options1:value2, - config_optionsn:valuen, layout:{}, items:[ {},//配置对象 {}//配置对象 - ], listeners:{ //定义事件(根据需要而定) click:function(){}, dblclick:function(){} - } }

《Ext JS权威指南》——1.5节如何获得帮助

1.5 如何获得帮助学习和使用Ext JS或多或少都会遇到一时难以解决的问题,这时候就需要寻求帮助.寻求帮助的方法如下.在线API文档:笔者认为,要提高自己的编程水平,很重要的一点就是经常看和查API文档.很多初学者习惯碰到问题就去论坛或者QQ群问人,这实在不是一个好的办法,因为缺乏思考过程.笔者认为,看API绝对可以提高你解决问题和寻找解决问题的能力,因为看和找的过程就是一个学习的过程.而去问人的过程,基本是一个复制过程,至于为什么要这样?为什么会这样?完全会被忽略.新的API还包含了不少使用

《Ext JS权威指南》——2.2节配置使用Ext JS库

2.2 配置使用Ext JS库要使用Ext JS,首先要做的是将Ext JS包里的resources目录.bootstrap.js文件.ext-all.js文件和ext-all-debug.js文件复制到项目目录.接着在页面中head标记部分添加CSS和脚本文件的引用: <link rel="stylesheet" type="text/css" href="path/resources/css/ext-all.css"/> <

《Ext JS权威指南》——2.9节为本书示例准备一个模板

2.9 为本书示例准备一个模板 为了便于示例的讲解,特意准备了这个模板.在没有特殊说明的情况下,本书后续的示例都会在此模板的基础上添加额外代码,该模板的代码将不会出现在示例的代码清单里. 新建一个Templates.html文件,加入如代码清单2-2所示的代码. 代码清单2-2 模板代码清单 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd&q

《Ext JS权威指南》——2.1节获取Ext JS 4

第2章 从"Hello World"开始 "Hello World"几乎已经成为所有开发类图书的必用案例,本书也不能免俗.本章将通过编写"Hello World"程序来让大家对如何使用Ext JS进行开发有初步的了解,如Ext JS代码是如何运行的.代码书写风格是怎样的.如何实现本地化等.2.1 获取Ext JS 4 要下载Ext JS 4,可访问地址:http://www.sencha.com/products/Ext JS/download/

《Ext JS权威指南》——第1章,第1.0节Ext JS 4开发入门

第1章 Ext JS 4开发入门在这一章,我们将介绍一些与Ext JS有关的基础知识以及Ext JS 4的一些主要变化.从2008年接触Ext JS到现在,不少初学者咨询过我,应该怎样才能学好Ext JS?这是一个很好的问题,每个人的学习方法不同,在学习Ext JS之前的基础都不同,因而如何学好Ext JS因人而异.不过Ext JS始终是一个JavaScript的框架,有其局限性,掌握了Javascript.HTML和CSS等知识,再加上掌握Ext JS的框架结构,就足够应付Ext JS的学习了

《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——第2章 SQL Server和PowerShell基础任务2.1 介绍

第2章 SQL Server和PowerShell基础任务 PowerShell V3--SQL Server 2012数据库自动化运维权威指南 2.1 介绍 本章介绍使用PowerShell完成一些基本的SQL Server任务的脚本和代码片段.我们将从简单任务开始,例如,列出SQL Server实例,创建对象,如表.索引.存储过程和函数,让你轻松以编程方式使用SQL Server. 你会发现一些使用PowerShell和SQL管理对象(SQL Management Object,SMO)的方