`
yeak2001
  • 浏览: 101087 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Ext JS4 class manager 解析

阅读更多
  为了更深入的理解Ext,今天深入了解了下Ext的类加载机制.

  首先需要了解Ext.Base这个是所有Ext类的基类,包括build-in和user custom class,也就是说Ext.Base里的所有方法和属性都是可以在子类里访问到的.
  Ext.Class是一个class factory,一般很少用到他,他不所有class的基类,所所有class的工厂。可以通过这个工厂create class,但是从工厂创建的class会没有namespace,aliasing,depency loading等由class manager管理的特性.所以不要直接从Ext.Class工厂创建Class.
   接下来分析下Ext ClassManager . Ext的一大核心, ClassManager 顾名思义,就是类的管理器。所有由Ext.create同步加载进来的类会被ClassManager管理着.ClassManager里维护了一个$classes的map, key是class的string name,value就是引进来的class.(同步加载机制见下)

  另外一个Ext的核心是Ext.Loader.他是ext实现dynamic load的关键所在。Ext loader分2种模式load class

注意:如果需要dynamic load需要把enabled设置成true,因为Ext.Loader是signleton,所以没有setEnabled方法,通过Ext.Loader.setConfig({enabled: true})打开dynamic load


  * Asynchronous loading -- 异步加载
  * synchronous loading -- 同步加载

Asynchronous loading

Method 1: Explicitly include what you need:
// SyntaxExt.require({String/Array} expressions);

// Example: Single aliasExt.require('widget.window');

// Example: Single class nameExt.require('Ext.window.Window');

// Example: Multiple aliases / class names mixExt.require(['widget.window', 'layout.border', 'Ext.data.Connection']);

// WildcardsExt.require(['widget.*', 'layout.*', 'Ext.data.*']);
Method 2: Explicitly exclude what you don't need:// Syntax: Note that it must be in this chaining format.Ext.exclude({String/Array} expressions)
   .require({String/Array} expressions);

// Include everything except Ext.data.*Ext.exclude('Ext.data.*').require('*');

// Include all widgets except widget.checkbox*,// which will match widget.checkbox, widget.checkboxfield, widget.checkboxgroup, etc.Ext.exclude('widget.checkbox*').require('widget.*');


异步加载的好处:


* 可以跨域(没有实践过)
* 不需要web server支持,应用程序可以通过file system得到要加载的类
* 最佳的编程体验,错误消息会给出具体的真实file的错误地址和错误行

异步的缺点: 所有的依赖关系必须都得一次交代清楚



synchronous loading
Ext.create('widget.window', { ... }); // Instead of new Ext.window.Window({...}); Ext.create('Ext.window.Window', {}); // Same as above, using full class name instead of aliasExt.widget('window', {}); // Same as above, all you need is the traditional `xtype`


同步加载的好处: 不需要给定所有依赖的类,应为同步会到ext-all.js去找
同步的缺点:


* 调试不方便,因为他给出的错误消息是ext-all.js不是真实的file的
* 只能在同一个domain里获取
* 需要一个web server

在使用同步加载是加载类前,Ext.ClassManager会先通过class name到$classes里查看这个class是不是已经被加载过了,如果没有被加载过他就会把这个类以及他的依赖全部一次加载。

切记如果希望创建的类被Ext ClassManager管理就要用Ext.define,如果需要被引进来的类被Ext ClassManager管理就要用Ext.create不要用new
分享到:
评论

相关推荐

    EXT JS 3.0 Core Class Diagram

    EXT JS 3.0 Core Class Diagram ext js的核心代码类图

    ext.js 源代码解析第二章(.net代码)

    ext.js 源代码解析第二章,主要是关于登录方面的一个解析。

    Learning Ext JS 4 pdf

    Learning Ext JS 4 by Crysfel Villa and Armando Gonzalez (Oct 8, 2012) $49.99 Paperback Order in the next 13 hours and get it by Tuesday, Mar 19. More Buying Choices - Paperback $46.48 new (17 ...

    [Ext JS] Ext JS 实战 第2版 英文版

    ll learn the best practices for building and scaling full featured web applications including how to customize and build Ext widgets Fully revised for Ext JS 4 0 ☆ 出版信息:☆ [作者信息] Jesus ...

    EXT JS 4自学手册

    EXTjs4自学手册.docx,适用用新手学习EXT JS 4

    Practical Ext JS 4

    After a quick refresher on some JavaScript basics, you will get to grips with Ext JS 4’s OO concepts (such as mixins) and familiarize yourself with its UI components and layout. You'll learn all the...

    ExtJS Ext ExtJavascript Javascript

    ExtJS Ext ExtJavascript Javascript

    深入浅出Ext.JS (4)

    ext js是一种用javascript编写的功能强大的ajax框架,可用于开发绚丽多彩的富客户端ajax应用。本书是ext js领域内的经典著作,由浅入深、循序渐进地对ext js各方面的知识进行了全面而系统的阐述。全书由一个可以引领...

    ext js javascript ext设计软件

    ext js javascript ext设计软ext js javascript ext设计软件件ext js javascript ext设计软件

    EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档

    EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档...

    Ext JS权威指南

    全书一共22章:第1章简要介绍了学习ext js必备的基础知识、json、ext js 4的新特性,以及其开发工具的获取、安装与配置;第2章介绍了ext js 4的获取、ext js库的配置与使用、语法、本地化,以及一个经典的入门示例;...

    [ExtJS] Ext JS 4 学习指南 (英文版)

    [Packt Publishing] Ext JS 4 学习指南 (英文版) [Packt Publishing] Learning Ext JS 4 (E-Book) ☆ 出版信息:☆ [作者信息] Crysfel Villa, Armando Gonzalez [出版机构] Packt Publishing [出版日期] 2013...

    ext JS 源码和学习资料

    ext JS 源码和学习资料,包含ext-3.2.0,ext3.3.1,ext4等多个版本源码,包含多个版本中文API和实用学习pdf

    Chapter3-《Ext JS高级程序设计》源代码

    Chapter4-《Ext JS高级程序设计》源代码.rar Chapter5《Ext JS高级程序设计》源代码.rar Chapter6-《Ext JS高级程序设计》源代码.rar Chapter7-《Ext JS高级程序设计》源代码.rar Chapter8-《Ext JS高级程序设计》源...

    Ext JS源码分析与开发实例宝典光盘源码

    Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发...

    Ext.JS.4.First.Look(第1版)

    Ext JS 4 is a JavaScript framework that provides resources to build Rich Internet Applications with great performance. Ext JS 4 has been packed with many new features and it is difficult to master, ...

    Ext4 动态加载js例子

    Ext4 动态加载js例子 Ext4 动态加载js例子 Ext4 动态加载js例子 Ext4 动态加载js例子

    EXT js 4带时间的日期控件

    EXT4.X带有时间的日期控件,本人花了很多时间,自己亲自使用的。感觉效果不错。有需要的朋友。可以下载来使用。我下载了很多别人写的。但是都没有使用成功。

    Chapter6-《Ext JS高级程序设计》源代码.rar

    Chapter4-《Ext JS高级程序设计》源代码.rar Chapter5《Ext JS高级程序设计》源代码.rar Chapter6-《Ext JS高级程序设计》源代码.rar Chapter7-《Ext JS高级程序设计》源代码.rar Chapter8-《Ext JS高级程序设计》源...

Global site tag (gtag.js) - Google Analytics