Extjs4.1.x 框架搭建 采用Application动态按需加载MV
在 Extjs4.1.x 框架的搭建过程中,我尝试采用 Application 动态按需加载 MVC 各模块。中午时分发布第一篇相关文章后,我意识到其中存在一些问题,有些理解尚未到位。经过一下午的深入研究与调试,终于实现了 MVC 各模块的按需加载,让我感到欣慰。
在此,我想谈谈对 ExtJs 的感受。如同关于 Java 和 .Net 的争论,一旦你开始使用 ExtJs,就会觉得它有其独特的优势。对于企业级应用而言,Extjs 框架为我提供了很大的帮助。尤其是对于那些没有专门 UI 设计团队的团队来说,Extjs 提供了一个难得的优秀 UI 框架。尽管曾经使用过其他框架如 miniUI,但相比之下,Extjs 的表现更为出色。两年前,我曾使用过 Extjs 2.0,后来因为收费而暂停了一段时间。之后转向了 Ext.Net,其开发效率确实很高。现在我又回到了 ExtJs4,仿佛回到了起点,虽然有些波折,但我依然充满热情。
言归正传,中午我遇到了一个问题,那就是控件的事件被注销了。经过思考,我认为这是由于 application 重新创建并覆盖主框架所致。这引发了我的思考:在整个系统中,是否只能存在一个 application?如何动态加载 controller?只要能够动态加载 controller,view 和 store 等都可以随之加载。
经过深入研究和实践,我发现了实现动态加载的关键。可以通过在 application 中定义路由,然后为每个 controller 创建一个独立的路由。这样,可以根据需要动态加载特定的 controller,而不会影响其他部分的运行。通过这种方式,我们可以实现 MVC 各模块的按需加载,提高应用的灵活性和性能。
Extjs4.1.x 框架提供了强大的功能,只要我们深入理解其机制并善于利用,就能够构建出高效、灵活的企业级应用。在未来的开发中,我将继续 Extjs 的更多特性,为项目带来更多的可能性。在构建我们的应用程序时,我们需要一个公共方法来允许应用程序加载控制器。以下是我们的实现代码:
我们动态加载JavaScript模块,特别是我们的核心应用对象。通过设置Ext.Loader的配置,我们能够启用模块的动态加载。我们通过Ext.require方法加载了'Ext.app.Application'和'Ext.app.Controller',这是我们的应用程序和控制器的基础。
对于控制器,我们实现了loadModel和loadView方法,这两个方法分别用于加载模型(MVC中的Model部分)和视图(MVC中的View部分)。我们还有一个getApplication方法,用于返回当前的应用程序对象。
在应用类中,我们实现了loadModule方法,这个方法允许我们动态加载控制器。我们首先检查当前应用程序是否已经包含了这个控制器,如果没有,我们就创建新的控制器实例,并加载其模型。然后,我们初始化控制器并绑定其启动事件。我们加载视图并构建模型与视图之间的数据绑定。这就是MVC模式的优点之一:我们可以按需加载模块,使得代码组织更为清晰,避免冲突。
在实际的应用场景中,"组织架构管理"是一个典型的例子。当我们点击功能节点树的"组织架构"时,只需要加载Org.js控制器即可。其他的模块会自动按需加载。以下是相关的代码示例:
通过application.loadModule("Users")和application.loadModule("Org")这样的调用,我们可以按需加载用户和组织架构的模块。每个模块都有自己的视图和模型,通过控制器进行管理和协调。通过这种方式,我们可以构建复杂的页面布局,如组织架构页面,包括树形结构和用户列表等组件。具体的业务逻辑代码虽然复杂且繁多(详细代码请参见附件),但整个架构的搭建过程清晰明了,按需加载的特性使得代码管理更为方便,避免了冲突和冗余。这样设计的程序结构使得我们在编写业务逻辑时能够专注于实现具体的功能需求,而不用过多考虑架构和模块间的协调问题。虽然工作量巨大,但一旦完成,整个系统的稳定性和可维护性将得到极大的提升。期待完成整个架构后,我们能够以更加高效的方式实现业务逻辑,为用户带来更好的体验。
编程语言
- Extjs4.1.x 框架搭建 采用Application动态按需加载MV
- 几款黑客工具的使用方法
- 网页爬虫之cookie自动获取及过期自动更新的实现
- webpack结合express实现自动刷新的方法
- php 利用array_slice函数获取随机数组或前几条数据
- PHP+MySQL实现在线测试答题实例
- 解决DropDownList总是选中第一项的方法
- JavaScript数据结构之双向链表定义与使用方法示例
- JBuilder2005单元测试之业务类介绍
- JS获取当前时间的实例代码(昨天、今天、明天)
- SQLServer 数据导入导出的几种方法小结
- php+mysql数据库实现无限分类的方法
- CI框架中集成CKEditor编辑器的教程
- JavaScript内存管理介绍
- XSLT轻松入门第一章:XSLT的概念
- PHP 7的一些引人注目的新特性简单介绍