《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"/>
<script type="text/javascript" src="path/bootstrap.js"></script>

要注意代码中的path是CSS文件或脚本文件相对于页面文件的路径。例如,页面文件在根目录,resoureces目录在根目录下,bootstrap.js在js目录下,就可这样写:

<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css"/>
    <script type="text/javascript" src="js/bootstrap.js"></script>

如果熟悉Ext JS 2或Ext JS 3的,会发现Ext JS 4不是直接加载ext-all.js或ext-all-debug.js,而是加载了bootstrap.js,这有什么好处呢?先看看bootstrap.js的源代码:

(function() {

    var scripts = document.getElementsByTagName('script'),
        localhostTests = [
            /^localhost$/,            /\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:\d{1,5})?\b/ // IP v4
        ],
        host = window.location.hostname,
        isDevelopment = null,
        queryString = window.location.search,
        test, path, i, ln, scriptSrc, match;
    for (i = 0, ln = scripts.length; i < ln; i++) {
        scriptSrc = scripts[i].src;
        match = scriptSrc.match(/bootstrap\.js$/);
        if (match) {
            path = scriptSrc.substring(0, scriptSrc.length - match[0].length);
            break;
        }
    }

    if (queryString.match('(\\?|&)debug') !== null) {
        isDevelopment = true;
    }
    else if (queryString.match('(\\?|&)nodebug') !== null) {
        isDevelopment = false;
    }
    if (isDevelopment === null) {
        for (i = 0, ln = localhostTests.length; i < ln; i++) {
            test = localhostTests[i];
            if (host.search(test) !== -1) {
                isDevelopment = true;
                break;
            }
        }
    }

    if (isDevelopment === null && window.location.protocol === 'file:') {
        isDevelopment = true;
    }

    document.write('<script type="text/javascript" src="' + path + 'ext-all' + ((isDevelopment) ? '-debug' : '') + '.js"></script>');

})();

代码首先使用getElementsByTagName获取页面中所有带有script标记的元素,然后从中找出带有bootstrap.js的标记,最后将bootstrap.js的相对路径取出并保存在变量path中。
接着判断url的参数中是否有“debug”字符,例如,出现http://localhost/index.html? debug,则设置isDevelopment 为true。否则检测是否有“nodebug”字符,如果有,设置为false。如果以上两个条件都不符合,isDevelopment 还是初始值null,就要判断url的域名是否是“localhost”或IPv4地址,如果是,则isDevelopment设置为true。
如果isDevelopment是null且当前的url的协议是“file:”,则将isDevelopment 设置为true。如果isDevelopment为true时,则加载ext-all-debug.js文件,否则加载ext-all.js文件。
通过bootstrap.js,可自动控制加载ext-all-debug.js文件或ext-all.js文件,不用我们自己去修改script标记,非常方便。但如果你觉得自己修改方便,也可以使用Ext JS旧版的方式加载脚本文件。不过bootstrap.js有个缺点,就是把所有IPv4地址都划归为使用调试文件的范围,不太符合国内的情况。因为在内网,应用也多半是使用IP地址访问的。不过,根据自己的情况去修改bootstrap.js也是很方便的。
如果想动态加载Ext JS库,就需要在页面中先加载builds目录下的Ext-core.js或Ext.-core-debug.js文件,然后在onReady函数外添加以下代码:

Ext.Loader.setConfig({enabled: true});
        Ext.Loader.setPath({//加载路径配置对象});
        Ext.require([
            'Ext.grid.*',
        …
        //需要加载的库
        ]);
        Ext.onReady(function(){
            //代码
        });

Loader对象的setConfig方法设置的enabled属性的作用是,开启动态加载的依赖加载功能。该功能的作用是在加载类库文件的时候,根据其依赖情况加载它需要的类库,其默认值是false,这是因为一般情况下Ext JS的库文件都是一次性全部加载的,很少用到动态加载。试想一下,Ext JS类库有200多个文件,在无法预知要加载多少类库的情况下,不断地向服务器请求100多个类库甚至全部200多个类库,那是很吓人的,不但增加了服务器的负担,客户也要一直等待类库的加载,这不是好的方法,所以不推荐使用此方法。
Loader对象的setPath方法是用来设置加载路径的,这在4.5节中会讲述。接着就是使用Ext.require方法请求加载类库了。

时间: 2024-10-07 11:10:33

《Ext JS权威指南》——2.2节配置使用Ext JS库的相关文章

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

1.4 Ext JS的开发工具的获取.安装与配置介绍 1.4.1 Ext DesignerExt Designer是一个所见即所得的创建Ext JS界面的工具软件,目前版本是1.2版,支持Ext JS 3.x和4.x版本,可在http://www.sencha.com/products/designer/download/下载试用版本. 安装双击下载文件将看到如图1-6所示的语言选择窗口. 选择简体中文后,单击"OK"按钮后将看到如图1-7所示的设定窗口. 单击"前进&quo

《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.2节JSON概述

1.2 JSON概述 1.2.1 认识JSON XML虽好,可作为数据交换格式,有时会喧宾夺主,标记比数据还多,徒增流量.更重要的是,在JavaScript中处理XML实在太不便利了.而JSON,没有附加的标记,在JavaScript中可作为对象处理,因而渐渐成了目前Web开发的标准数据交互格式.JSON的英文全称是"JavaScript Object Notation",意思就是JavaScript对象表示法.它是一种基于文本的.独立于语言的轻量级数据交换格式.它来源于ECMA-26

《Ext JS权威指南》——2.3节编写“Hello World”程序

2.3 编写"Hello World"程序 明白了Ext JS 4配置后,就可编写"Hello World"程序了.新建一个HTML文件Hello_World.html,加入如代码清单2-1所示的代码. 代码清单2-1 Hello World程序 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"

《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权威指南》——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.5节关于Ext.BLANK_IMAGE_URL

2.5 关于Ext.BLANK_IMAGE_URL 在Ext-more.js文件中可找到BLANK_IMAGE_URL属性的默认值和定义.其默认值是: BLANK_IMAGE_URL : 'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==' 定义是: BLANK_IMAGE_URL : (isIE6 || isIE7) ? 'http:/' + '/www.sencha.com/s

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

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