为了更深入的理解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是一个成熟的JavaScript框架,用于开发富互联网应用程序,特别是那些需要运行在各种设备上的复杂、数据密集型的前端界面。Ext JS 4在架构层面体现了高度的模块化和可扩展性,这也是它区别于其他前端框架的一...
本压缩包包含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库核心类结构的图表,它展示了EXT JS 3.0版本中的主要组件和它们之间的关系。EXT JS是一个强大的JavaScript库,主要用于构建富客户端Web应用程序,其核心功能包括...
《Ext JS 4初探:全面解析与迁移指南》 一、引言 《Ext JS 4初探》是一本由Loiane Groner撰写的专为开发者设计的实用指南,旨在帮助他们理解和掌握Ext JS 4的新特性,并提供从Ext JS 3迁移到最新版本的策略和技巧...
EXT JS 是一个强大的JavaScript前端框架,专用于构建富客户端应用。EXT JS 4 版本在日期控件方面提供了丰富的功能,使得开发者可以方便地处理日期和时间输入。在这个特定的资源中,我们关注的是一个集成时间选择的...
本书从基础的JavaScript知识点开始,逐步过渡到Ext JS 4的面向对象编程概念,重点介绍了Ext JS的UI组件、布局以及核心功能,包括MVC架构、应用程序的主题与样式设计、以及如何通过网格、树形控件和图表等组件展示...
ext.js 源代码解析第二章,主要是关于登录方面的一个解析。
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 ...
Spring MVC作为Java后端的主要MVC框架,提供了强大的控制层支持,而Ext4JS则是一个流行的JavaScript库,用于构建富客户端应用。通过整合这两者,我们可以构建出具有高效数据管理和用户友好的界面的Web应用。 首先,...
Ext JS 是一款基于 JavaScript 的前端框架,主要用于构建复杂的企业级 Web 应用程序。它提供了一套丰富的 UI 组件库以及一系列用于数据处理、应用架构设计等功能模块。自发布以来,Ext JS 不断迭代更新,版本4(Ext ...
EXT JS 是一款强大的JavaScript库,专门用于构建富客户端应用程序。其统计图表组件是EXT JS库中的一个重要部分,提供了丰富的图表类型和高度定制的功能,适用于数据分析、数据可视化以及各种业务报告。EXT JS Charts...
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的开源富客户端框架,专为构建企业级Web应用程序而设计。它提供了一套完整的组件化UI控件、数据绑定机制以及强大的事件处理系统,使得开发者能够创建功能丰富的、交互性强的Web应用。EXT ...
Ext JS 是一种流行的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件,如表格、面板、窗口、菜单等,使得开发者能够创建功能强大的交互式前端应用。在"ext js 打包资源下载"中,我们...
EXTjs4自学手册.docx,适用用新手学习EXT JS 4
这本书分为三章,涵盖了Ext JS的关键概念和技术,旨在帮助开发者充分利用这个强大的JavaScript库来构建功能丰富的Web应用程序。 第一章可能涉及了Ext JS的基础和核心概念,包括MVC(Model-View-Controller)架构的...
《JavaScript凌厉开发——Ext JS3详解与实践》是一本深度探讨JavaScript库Ext JS3的专著,旨在帮助开发者深入理解和高效运用这一强大的前端框架。本文将围绕标题、描述及标签,详细介绍Ext JS3的核心概念、关键特性...
Ext JS 是一种基于 JavaScript 的富客户端应用框架,用于构建功能丰富的、交互性强的Web应用程序。这个资源大全包含了一些关键的学习资料,将有助于深入理解和掌握Ext JS的精髓。 首先,我们来看"EXT学习文档 .doc...
Ext JS 是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。这个库以其丰富的用户界面组件、数据绑定功能和可扩展性而闻名。Ext JS 提供了一整套预先封装的组件,如表格、面板、菜单、按钮、表单、树形...