ExtJS4 引入了现在灰常流行的前端MVC。这在原本的3.3.1里面是没有的。

原先项目里为了实现相对的MVC,自己写了一个controller和model ,收集并且保持JS端的数据。

所以呢,这时候的文档结构就完全不一样了。原本的结构更像是传统 C# winform ,逻辑卸载页面的cs文件里。只有对于数据收集和数据保持才会放在C和M上,逻辑操作都是直接在V上写的。

不过前端MVC也是一个趋势,怎么说C#的webform 也已经被淘汰了,人家微软都出到 asp.net MVC3了。

增加了几个类:Ext.app.Application & Ext.app.Controller & Ext.app.EventBus

Ext.app.EventBus 就像是一个全局的MessageBus,文档里是说,NOTE This is a private utility class for internal use by the framework. Don't rely on its existence.  一般不建议使用的东西,都是我们可以着重研究的地方。以后如果需要全局MessageBus的话,我们为何不直接放到这个类里面呢?

Ext.app.Application

Represents an Ext JS 4 application, which is typically a single page app using a Viewport. A typical Ext.app.Applicationmight look like this:

Ext.application({
    name: 'MyApp',
    launch: function() {
        Ext.create('Ext.container.Viewport', {
            items: {
                html: 'My App'
            }
        });
    }
});

对于Ext4来说,他认为,一个典型的使用Ext框架的应用,应该是一个RIA的,也就是说,用AJAX在一个页面里流转的。所以,他认为,你这个app应该使用了Viewport,上面这段代码定义了一些全局的变量,首先创建了'MyApp'这个类,包括他的所有需要的M、V和C。也就是说创建一个全局的namespace,不用像3里面那样到处需要长名字的namespace,需要定义Ext.ns();,为了避免长名字还不得不定义许多局部的短名变量。

当然我们可以更加符合MVC模式一些。

Ext.application({
    name: 'Blog',
    models: ['Post', 'Comment'],
    controllers: ['Posts', 'Comments'],

launch: function() {
        ...
    }

});

这里只有 models 和 controllers 因为 views 应该是通过 controllers 来控制管理的。

扯出去点,在 C 里面定义 V :

Ext.define('MyApp.controller.Posts', {
    extend: 'Ext.app.Controller',
    views: ['posts.List', 'posts.Edit'],

//the rest of the Controller here

});

看到这里,觉得,Ext 是借鉴了 asp.net MVC 的很多东西。

Because we told our Application about our Models and Controllers, and our Controllers about their Views, Ext JS will automatically load all of our app files for us. This means we don't have to manually add script tags into our html files whenever we add a new class, but more importantly it enables us to create a minimized build of our entire application using the Ext JS 4 SDK Tools.

看到这句话的时候我整个人都斯巴达了,尼玛,Sencha 又要推 Ext JS 4 SDK …… 估计也是和 Designer 一样坑爹的东西。扯开点说,他们家的工具,我觉得还是不要使用了,Designer 也好,这个 SDK 也罢。bug 太多。不靠谱的,其实本身用这个框架就有争议,又要回到上一篇的开始了 ……

看HK的人做的 Ext JS 3 to Ext JS 4 的upgrade的study,真想掐死他。

我还是坚持认为,如果要做upgrade,就推翻重新做。很多V上的逻辑本来就应该抽出来放在C,他们从来没人想过 architecture 上的东西。

最后,还是没忍住抱怨几句。

转载于:https://www.cnblogs.com/liyinkan/archive/2011/12/19/2293433.html

Ext JS 4 笔记1相关推荐

  1. EXt js 学习笔记总结

    1. get . fly. getCmp .getBody .getDoc .getDom..    get-----ExtJs获取节点.dom.提供缓存机制  Ext.Element类是Ext对DO ...

  2. EXT.JS 学习笔记

    store.loadData() loadData(object data, [Boolean append])从本地JavaScript变量中读取数据,append为true时,将读取的数据附加到原 ...

  3. 《深入浅出Ext JS》2.19全国首发

    <深入浅出Ext JS>2.19全国首发 <深入浅出Ext JS>自选题立项以来,在JavaEye和博客园等知名技术社区内就已经引起了广泛的关注和强烈的反响.在写作和编辑阶段, ...

  4. node.js学习笔记

    # node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...

  5. 【Ext.Net学习笔记】03:Ext.Net DirectEvents用法详解、DirectMethods用法详解

    Ext.Net通过DirectEvents进行服务器端异步的事件处理.[Ext.Net学习笔记]02:Ext.Net用法概览.Ext.Net MessageBus用法.Ext.Net布局 中已经简单的 ...

  6. 使用cordova将Ext JS 6.2的Modern应用程序打包为安卓APP

    近期使用Ext JS 6.2的Modern工具包写了一个应用程序,本意是作为一个移动应用程序,在移动端通过浏览器来访问的.但后来有个需求需要将应用程序打包为APP来实现,于是就尝试着使用cordova ...

  7. 千锋Node.js学习笔记

    千锋Node.js学习笔记 文章目录 千锋Node.js学习笔记 写在前面 1. 认识Node.js 2. NVM 3. NPM 4. NRM 5. NPX 6. 模块/包与CommonJS 7. 常 ...

  8. Ext JS Designer 1.0.5 发布

    ExtJS官方Blog上发布了Ext JS Designer新版本,版本号为1.0.5,这个版本添加了不少新特性,如直接修改title,config参数搜索等等.虽然这个版本仍然不支持代码生成,不过另 ...

  9. 【翻译】Ext JS 6 Beta发布

    原文:Ext JS 6 Beta is Now Available 概述 Ext JS 6的好处 新的Ext JS功能和工具 需要你的反馈意见 概述 很高兴,Ext JS 6 beta版本现在发布了. ...

最新文章

  1. Linux进阶 vim grep sed awk 正则表达式
  2. VScode中html怎么引入js,vscode中如何使用typescript,如何自动编译成js文件
  3. 扫地机器人返充原理_扫地机器人原理是什么?
  4. 彻底卸载acer软件保护卡_宏碁(Acer)传奇 14英寸 新一代7nm六核处理器 真香机 高性能宏基笔记本电脑(R5-4500U 7纳米 16G 512GSSD )...
  5. Java基础入门笔记-关系操作符
  6. 一道实用linux运维问题的9种shell解答方法!
  7. 如何对大数据进行数据分析
  8. HTML5 API 浏览器支持情况检测
  9. 网络邻居上不显示计算机,网上邻居不显示或找不到自己电脑怎么办?
  10. libusb 串口 android,rk3399pro通过修改内核编译支持luat air720上网及串口通讯
  11. Android5.0系统下代码格式化sd卡方法
  12. 十余款新品惊艳亮相,华为春季旗舰新品发布会看点满满
  13. linux tuxedo查看服务进程数,tuxedo管理命令之tmboot与tmshutdown
  14. 信息学奥赛一本通:1194:移动路线
  15. R语言:无法精确计算带连结的p值
  16. 管理SQL Server AlwaysOn(5)——常规监控(1)——常规监控
  17. 《推荐系统实践》读书笔记3
  18. 2018年年初的面试经验谈
  19. 实战项目(一)嵌入式基础学习与上位机入门设计
  20. error C4996: ‘GetVersionExW‘: 被声明为已否决

热门文章

  1. Python字符串方法用示例解释
  2. 博客 rss 如何使用_如何使用RSS从您的GatsbyJS博客自动交叉发布
  3. 泛型java博客园,Java深度历险之Java泛型
  4. 怎样把字符1变成数字1
  5. IDEA新建springboot项目发生错误
  6. Python适合初学者或者0基础学习吗?
  7. 记录智能指针使用shared_ptr使用错误
  8. 现在很火的答题赢钱游戏,让我来简单教你怎么做自动答题器
  9. DevExpress v17.2新版亮点—WPF篇(四)
  10. 对ListenSocket 的研究(四)