无论前端框架多么复杂, 最基本的技术是不变的:

  • HTML, Javascript , CSS ;
  • Json , Javascript 函数与面向对象, 原型继承机制。

Extjs 对数据如何与组件交互和组件展现数据的层次性划分是比较清晰的, 值得学习和借鉴。

数据展现基本机制

关于其中的实现原理, 应该与服务端相应技术类似, 只是使用 Javascript 实现而已:

  1. Model : 类似于 Java 端的 DataObject, 或 JavaBean;
  2. Reader: 其核心技术应该是 JSON 解析。 使用一个 JSON 工具包, 解析传入的字符串,并转化为 Model 实例集
  3. Writer: 将 Model 实例数据及请求进行修改、拼接、编码并发送, 也是使用 JSON 工具包;
    同 Reader 相似, 过程相逆;
  4. Proxy: 接收服务端的数据并委托 Reader 进行解析, 或者接收客户端的数据,委托 Writer 进行处理;
    从图中可以看出, 它是枢纽角色;
  5. Store: 数据的最大管理者,  它封装 Proxy, Model , Data 及解析而得的 Model 实例集, 单独与组件进行交互;
    Store 的实现 在 Java  端应该是不难模拟的, 可以练练手。

组件展示:

  1. 组件展示主要是将 Store 里的数据与 HTML 片段, 生成最终的HTML文本,并交给浏览器进行显示;
  2. HTML 生成:  使用模板 或 DOM 元素生成器;
  3. 模板生成HTML: 可以使用正则表达式来匹配和填充;
  4. DOM元素生成器: 为原生的HTML标签提供一层封装, 变成 Extjs 组件。

示例代码:

目录:

应用启动:  app.js

Ext.Loader.setConfig({enabled:true, disableCache:true});Ext.application({name:'Extjstudy',appFolder:"app",autoCreateViewport: true,requires:['Extjstudy.global.ExtjstudyTemplates'],stores:['VmSnapshot'],launch:function(){}
});

总视图文件: Viewport.js

Ext.define('Extjstudy.view.Viewport', {extend:'Ext.container.Viewport',layout:'border',requires:['Extjstudy.view.Entrance'],items: [{xtype: 'container',region: 'north',html:'<div>Extjs Study and Explore </div>',style: {padding: '10px',font: '1.2em'}},{xtype:'entrance',region: 'center'}]});

视图文件: Entrance.js

Ext.define('Extjstudy.view.Entrance', {extend: 'Ext.panel.Panel',alias: 'widget.entrance',title: 'Customized View Demo',layout: 'fit',items: [{xtype: 'dataview',store: 'VmSnapshot',tpl: et.deviceSnapshotTpl,itemSelector: 'div.vmdeviceSnapshots',width: '800'}]
});

模板文件: ExtjstudyTemplates.js

Ext.define('Extjstudy.global.ExtjstudyTemplates', {deviceSnapshotTpl: new Ext.XTemplate('<tpl for=".">','<div class="vmdeviceSnapshots" style="margin:15px 10px 30px 15px">', '<p>磁盘: {device_no} ( {device_type}, {device_size}G ) </p>','<p>快照详情:</p>','<table border="1" width="95%" cellpadding="3" class="moonmmTable">','<tr><th>快照ID</th><th>创建时间</th><th>进度</th><th>Image_no</th><th>所属用户</th></tr>','<tpl for="snapshotExts">', '<tr align="center"><td> {snapshot_id}</td><td>{create_time}</td><td>{progress}</td><td>{image_no}</td><td>{owner}</td> </tr>','</tpl>','</table>','</div></tpl><br/><br/>'),});var et = Ext.create('Extjstudy.global.ExtjstudyTemplates');

Model: VmSnapshot.js

Ext.define('Extjstudy.model.VmSnapshot', {extend: 'Ext.data.Model',fields:[{   name: 'vm_name', type: 'string' } ,{   name: 'vm_status', type: 'string' } ,{   name: 'device_no', type: 'string' } ,{   name: 'device_type', type: 'string' } ,{   name: 'device_size', type: 'string' } ,{   name: 'snapshotExts', type: 'auto' } ,{   name: 'snapshots', type: 'auto' }]
});

Store: VmSnapshot.js

Ext.define('Extjstudy.store.VmSnapshot', {extend: 'Ext.data.Store',model: 'Extjstudy.model.VmSnapshot',data:[{"vm_name":"change-test01","vm_status":"Shutting","device_no":"3-10057140","mode":"system","device_size":60,"device_type":"system","safety_quota":1,"snapshotExts":[{"snapshot_id":"3-10057140-607877","snapshot_name":"","progress":"100%","create_time":"2013-05-22 18:02:57","image_no":"redhat54.64.20120823.qa_rpc.vhd","owner":"229"},{"snapshot_id":"3-10057140-607881","snapshot_name":"","progress":"100%","create_time":"2013-05-22 19:05:31","image_no":"redhat54.64.20120823.qa_rpc.vhd","owner":"229"},{"snapshot_id":"3-10057140-607884","snapshot_name":"","progress":"100%","create_time":"2013-05-22 19:53:02","image_no":"redhat54.64.20120823.qa_rpc.vhd","owner":"229"}],"snapshots":[{"snapshot":"3-10057140-607877"},{"snapshot":"3-10057140-607881"},{"snapshot":"3-10057140-607884"}]},{"vm_name":"change-test01","vm_status":"Shutting","device_no":"3-10057141","mode":"data","device_size":40,"device_type":"data","safety_quota":1,"snapshotExts":[{"snapshot_id":"3-10057141-607879","snapshot_name":"","progress":"100%","create_time":"2013-05-22 18:06:01","image_no":"","owner":"229"}],"snapshots":[{"snapshot":"3-10057141-607879"}]}]
})

结果:

Extjs数据展现原理相关推荐

  1. 【重学Vue】数据响应原理真的是双向绑定吗?

    最近 Ant Design Vue 作者 - 唐金州,在某平台开课了,在整个课程中系统的讲述了Vue的开发实战.在第八讲中介绍了Vue双向绑定的问题,这里我整理一些资料客观的分析一下 Vue数据响应原 ...

  2. 谷歌深度学习四大教训:应用、系统、数据及原理(附数据集列表)

     谷歌深度学习四大教训:应用.系统.数据及原理(附数据集列表) 新智元mp 2016-10-28 19:22:55 阅读(809) 评论(0) 新智元原创 参考来源:airsassociation ...

  3. 【直播预告】计算机视觉中数据增强原理和实践

    应广大粉丝要求,以后有三AI会多组织直播,分享更多实践的干货知识,下面预告一下下周六的知乎Live直播-计算机视觉中数据增强原理和实践. 1.直播基本信息 时间:2019年4月20日20:00开始. ...

  4. 解析BW:数据源提取数据的原理

    解析BW:数据源提取数据的原理 题记:忽然想到这么个问题,后勤数据源和非后勤数据初始化有何区别,然后进行周边的拓展,所以就形成了下文.大部分知识源于TBW350和SAP SDN. 对数据源抽取机制的深 ...

  5. [渝粤教育] 厦门大学 大数据技术原理与应用 参考 资料

    教育 -大数据技术原理与应用-章节资料考试资料-厦门大学[] 第1章 大数据概述 单元测验 1.[单选题]第三次信息化浪潮的标志是: A.个人电脑的普及 B.互联网的普及 C.云计算.大数据.物联网技 ...

  6. 从源代码角度看Struts2返回JSON数据的原理

    2019独角兽企业重金招聘Python工程师标准>>> 前面一篇文章其实只是介绍了如何在Struts2中返回JSON数据到客户端的具体范例而无关其原理,内容与标题不符惹来标题党嫌疑确 ...

  7. HDFS读写数据的原理

    目录 1 概述 2 HDFS写数据流程 3 HDFS读数据流程 目录 最近由于要准备面试,就把之前学过的东西好好整理下,权当是复习. 下面说下HDFS读写数据的原理. 1 概述 HDFS集群分为两大角 ...

  8. 深入了解Struts2返回JSON数据的原理及具体应用范例

    来源:http://yshjava.iteye.com/blog/1333104 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一 ...

  9. 【Vue2.0】—Vue监视数据的原理(五)

    [Vue2.0]-Vue监视数据的原理(五) <body><div id="root"><h1>学生的基本信息</h1><bu ...

最新文章

  1. Spring AOP切点表达式详解
  2. [android] 隐式意图的配置
  3. 209. Minimum Size Subarray Sum 长度最小的子数组
  4. Bootstrap系列 -- 41. 带表单的导航条
  5. java 文件目录_Java——文件及目录File操作
  6. 腾讯大数据之TDW计算引擎解析——Shuffle
  7. Windows下的Crontab表达式解析DLL的使用
  8. python群发邮箱软件_maily:命令行邮件(批量)发送工具
  9. idea package放在什么位置_NBA现役球员大排名,你会把20岁的东契奇放在什么位置?...
  10. sql数据库去重语法_浅谈sql数据库去重_MySQL
  11. 【学术】论文读不懂怎么办?
  12. 简单记录jasypt使用
  13. 车路协同场景身份认证及 V2X 通信安全保障
  14. RadioButton设置图片大小
  15. 设备功耗计算专题《低功耗实战篇,全志XR808连接AP的最低功耗研究》
  16. 在线破解hash的优秀网站
  17. 解决Error response from daemon: conflict: unable to delete bf6a13bd36ca (must be forced)
  18. ttl传输种过期_ttl传输中过期是什么意思怎么解决
  19. 如何使用计算机上合并计算方法,excel合并计算的方法步骤详解
  20. 北京市高等教育自学考试2023年教材信息表

热门文章

  1. Wireshark 的使用 —— 过滤器(filter)
  2. 夏至与北回归线的故事
  3. 面向对象——抽象基类
  4. java 创建类带泛型_java-创建泛型类列表
  5. opencv 高通滤波和低通滤波_一阶低通滤波原理详解
  6. python课程开课吧怎么样-开课吧最新廖雪峰Python商业爬虫课程,全套完整课程资源下载...
  7. python是什么专业-Python是个什么鬼?为什么985学生都要学它?!
  8. python使用-使用python进行数据清洗
  9. python下载-Python下载和安装图文教程[超详细]
  10. 免费python自学攻略-自学python二三事