一、搭建Extjs 4.1开发环境

Extjs是个不错的js框架,在企业级开发中有着广泛的应用,但他的一个广受诟病的缺点是太重。

幸运的是,从extjs 4开始引入了dynamic loading(动态加载)的特性,使得这一问题有稍微一些改善。

记得一年多前参与的一个管理系统使用了3.4版本的,现在因工作原因又需要使用extjs,需要重新学习一下。本系列文章将记录extjs重新学习的整个过程,本来想基于django写的,但是又转型到.net开发了,所以本文将以mvc3为学习框架。

首先下载extjs 4.1,解压后在iis或者其他web server中,将解压后的目录添加为一个站点

这样在查看API和Example的时候就非常方便了。

1.了解extjs目录内容

    解压后的目录中有很多内容,达到一百多兆,当然我们开发中使用到的东西不会这么多。

    首先是很多js文件,我们在开发中会经常用到的4个:

    ext.js: 这是压缩后的主文件,222 KB的内容,这种方式是dynamic loading时使用的

    ext-debug.js: 这是ext.js的未压缩代码,509 KB的内容,也是dynamic loading的

    ext-all.js: 这是传统方式的代码,所有内容都放置在一个文件中,适合在初学的时候使用

    ext-all-debug.js: 同上,是可读的代码 

    本系列使用的dynamic loading的方式,在调试过程中,使用ext-debug.js

  然后是src和resources目录,我们在开发的时候会经常使用到这两个目录的内容

2.开始使用extjs 4.1

    准备工作做好了之后,我们就可以进入开发了。

    首先我们需要一个页面,初始化一些配置,随后将下述代码添入其中

    

<!-- 引入主css文件,extjs样式 -->
    <link rel="stylesheet" type="text/css" href="http://www.cnblogs.com/Content/resources/css/ext-all.css" />
    <!-- dynamic loading时使用的主js入口 -->
    <script type="text/javascript" src="http://www.cnblogs.com/Scripts/Ext/ext.js">
    </script>
    <script type="text/javascript">
        //使用extjs的loader功能,动态载入代码
        Ext.Loader.setConfig({
            enabled: true,
            //在项目中使用Ext为命名空间时,在如下路径中寻找代码
            paths: {
                Ext: "http://www.cnblogs.com/Scripts/Ext/src" 
            } 
        }); 
    </script>

    随后我们就可以在项目中自由的使用extjs的强大功能了。

    笔者在加入extjs的resources目录时,并没有将整个目录都复制过来,因为这可能会稍微增大项目的大小,如果你不在意这些冗余而且也懒得手动加入文件的话,就可以直接将整个resources目录复制过来。

    笔者采用的方式是(较繁琐):建立resources目录,在建立子目录css和themes,将ext-all.css拷入css目录中

    在使用extjs的过程中,使用chrome的控制台查看哪些文件缺失,再将相应的文件拷入。

    至于src目录,其中的代码都是调试的代码,在发布时,可以使用压缩工具压缩后存放。

3. 建立id为logon_div的div标签,插入如下javascript代码,这个是sencha ext js的样例代码

View Code
Ext.require([
    'Ext.form.*',
    'Ext.layout.container.Column',
    'Ext.tab.Panel'
]);

Ext.onReady(function () {
    Ext.QuickTips.init();

    var required = '<span style="color:red;font-weight:bold" data-qtip="Required">*</span>';

    var simple = Ext.widget({
        xtype: 'form',
        layout: 'form',
        collapsible: true,
        id: 'simpleForm',
        url: 'save-form.php',
        frame: true,
        title: '登录权限管理系统',
        bodyPadding: '5 5 0',
        width: 350,
        fieldDefaults: {
            msgTarget: 'side',
            labelWidth: 75
        },
        defaultType: 'textfield',
        items: [{
            fieldLabel: 'First Name',
            afterLabelTextTpl: required,
            name: 'first',
            allowBlank: false
        }, {
            fieldLabel: 'Last Name',
            afterLabelTextTpl: required,
            name: 'last',
            allowBlank: false
        }, {
            fieldLabel: 'Company',
            name: 'company'
        }],

        buttons: [{
            text: '登录',
            handler: function () {
                this.up('form').getForm().isValid();
            }
        }, {
            text: '取消',
            handler: function () {
                this.up('form').getForm().reset();
            }
        }]
    });

    simple.render(Ext.get('logon_div'));
});

由于使用dynamic loading,在使用控件之前,需要使用Ext.require(['Ext.grid.*']);这一类的代码将js

文件动态引入。

运行,在chrome控制台或者Firebug中查看错误信息,会看到一些文件缺失的提示,按照提示的文件路径,建立相应的目录,并拷入相应的文件(如果你将整个resources目录引入的话,则不需要)。

一个包含三个输入框的界面出来了,前两个为必填项,如果缺失,会有红色线和警示符提醒。

 

posted @ 2012-12-18 14:56  nolink  阅读(642)  评论(0编辑  收藏  举报