`
yeak2001
  • 浏览: 102766 次
  • 性别: 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 4 Architecture

    Ext JS 4是一个成熟的JavaScript框架,用于开发富互联网应用程序,特别是那些需要运行在各种设备上的复杂、数据密集型的前端界面。Ext JS 4在架构层面体现了高度的模块化和可扩展性,这也是它区别于其他前端框架的一...

    ext JS 源码和学习资料

    本压缩包包含EXT JS的多个版本源码,如ext-3.2.0、ext3.3.1和ext4,以及对应的中文API文档和实用学习资料,对于想要深入理解EXT JS或提升EXT JS开发技能的人来说是宝贵的资源。 一、EXT JS 源码分析 EXT JS 的源码...

    EXT JS 3.0 Core Class Diagram

    EXT JS 3.0 Core Class Diagram 是一个关于EXT JS库核心类结构的图表,它展示了EXT JS 3.0版本中的主要组件和它们之间的关系。EXT JS是一个强大的JavaScript库,主要用于构建富客户端Web应用程序,其核心功能包括...

    Ext JS 4 First Look

    《Ext JS 4初探:全面解析与迁移指南》 一、引言 《Ext JS 4初探》是一本由Loiane Groner撰写的专为开发者设计的实用指南,旨在帮助他们理解和掌握Ext JS 4的新特性,并提供从Ext JS 3迁移到最新版本的策略和技巧...

    EXT js 4带时间的日期控件

    EXT JS 是一个强大的JavaScript前端框架,专用于构建富客户端应用。EXT JS 4 版本在日期控件方面提供了丰富的功能,使得开发者可以方便地处理日期和时间输入。在这个特定的资源中,我们关注的是一个集成时间选择的...

    Practical Ext JS 4

    本书从基础的JavaScript知识点开始,逐步过渡到Ext JS 4的面向对象编程概念,重点介绍了Ext JS的UI组件、布局以及核心功能,包括MVC架构、应用程序的主题与样式设计、以及如何通过网格、树形控件和图表等组件展示...

    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 ...

    springMVC整合ext4js

    Spring MVC作为Java后端的主要MVC框架,提供了强大的控制层支持,而Ext4JS则是一个流行的JavaScript库,用于构建富客户端应用。通过整合这两者,我们可以构建出具有高效数据管理和用户友好的界面的Web应用。 首先,...

    Ext JS学习资料

    Ext JS 是一款基于 JavaScript 的前端框架,主要用于构建复杂的企业级 Web 应用程序。它提供了一套丰富的 UI 组件库以及一系列用于数据处理、应用架构设计等功能模块。自发布以来,Ext JS 不断迭代更新,版本4(Ext ...

    EXT JS 统计图表

    EXT JS 是一款强大的JavaScript库,专门用于构建富客户端应用程序。其统计图表组件是EXT JS库中的一个重要部分,提供了丰富的图表类型和高度定制的功能,适用于数据分析、数据可视化以及各种业务报告。EXT JS Charts...

    [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 javascript ext设计软件

    EXT JS是一种基于JavaScript的开源富客户端框架,专为构建企业级Web应用程序而设计。它提供了一套完整的组件化UI控件、数据绑定机制以及强大的事件处理系统,使得开发者能够创建功能丰富的、交互性强的Web应用。EXT ...

    ext js 打包资源下载

    Ext JS 是一种流行的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件,如表格、面板、窗口、菜单等,使得开发者能够创建功能强大的交互式前端应用。在"ext js 打包资源下载"中,我们...

    EXT JS 4自学手册

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

    Ext JS高级程序设计

    这本书分为三章,涵盖了Ext JS的关键概念和技术,旨在帮助开发者充分利用这个强大的JavaScript库来构建功能丰富的Web应用程序。 第一章可能涉及了Ext JS的基础和核心概念,包括MVC(Model-View-Controller)架构的...

    JavaScript凌厉开发——Ext JS3详解与实践

    《JavaScript凌厉开发——Ext JS3详解与实践》是一本深度探讨JavaScript库Ext JS3的专著,旨在帮助开发者深入理解和高效运用这一强大的前端框架。本文将围绕标题、描述及标签,详细介绍Ext JS3的核心概念、关键特性...

    Ext js 资源大全

    Ext JS 是一种基于 JavaScript 的富客户端应用框架,用于构建功能丰富的、交互性强的Web应用程序。这个资源大全包含了一些关键的学习资料,将有助于深入理解和掌握Ext JS的精髓。 首先,我们来看"EXT学习文档 .doc...

    Ext JS - JavaScript Library

    Ext JS 是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。这个库以其丰富的用户界面组件、数据绑定功能和可扩展性而闻名。Ext JS 提供了一整套预先封装的组件,如表格、面板、菜单、按钮、表单、树形...

Global site tag (gtag.js) - Google Analytics