Extjs数据展现原理
无论前端框架多么复杂, 最基本的技术是不变的:
- HTML, Javascript , CSS ;
- Json , Javascript 函数与面向对象, 原型继承机制。
Extjs 对数据如何与组件交互和组件展现数据的层次性划分是比较清晰的, 值得学习和借鉴。
数据展现基本机制
关于其中的实现原理, 应该与服务端相应技术类似, 只是使用 Javascript 实现而已:
- Model : 类似于 Java 端的 DataObject, 或 JavaBean;
- Reader: 其核心技术应该是 JSON 解析。 使用一个 JSON 工具包, 解析传入的字符串,并转化为 Model 实例集
- Writer: 将 Model 实例数据及请求进行修改、拼接、编码并发送, 也是使用 JSON 工具包;
同 Reader 相似, 过程相逆; - Proxy: 接收服务端的数据并委托 Reader 进行解析, 或者接收客户端的数据,委托 Writer 进行处理;
从图中可以看出, 它是枢纽角色; - Store: 数据的最大管理者, 它封装 Proxy, Model , Data 及解析而得的 Model 实例集, 单独与组件进行交互;
Store 的实现 在 Java 端应该是不难模拟的, 可以练练手。
组件展示:
- 组件展示主要是将 Store 里的数据与 HTML 片段, 生成最终的HTML文本,并交给浏览器进行显示;
- HTML 生成: 使用模板 或 DOM 元素生成器;
- 模板生成HTML: 可以使用正则表达式来匹配和填充;
- 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数据展现原理相关推荐
- 【重学Vue】数据响应原理真的是双向绑定吗?
最近 Ant Design Vue 作者 - 唐金州,在某平台开课了,在整个课程中系统的讲述了Vue的开发实战.在第八讲中介绍了Vue双向绑定的问题,这里我整理一些资料客观的分析一下 Vue数据响应原 ...
- 谷歌深度学习四大教训:应用、系统、数据及原理(附数据集列表)
谷歌深度学习四大教训:应用.系统.数据及原理(附数据集列表) 新智元mp 2016-10-28 19:22:55 阅读(809) 评论(0) 新智元原创 参考来源:airsassociation ...
- 【直播预告】计算机视觉中数据增强原理和实践
应广大粉丝要求,以后有三AI会多组织直播,分享更多实践的干货知识,下面预告一下下周六的知乎Live直播-计算机视觉中数据增强原理和实践. 1.直播基本信息 时间:2019年4月20日20:00开始. ...
- 解析BW:数据源提取数据的原理
解析BW:数据源提取数据的原理 题记:忽然想到这么个问题,后勤数据源和非后勤数据初始化有何区别,然后进行周边的拓展,所以就形成了下文.大部分知识源于TBW350和SAP SDN. 对数据源抽取机制的深 ...
- [渝粤教育] 厦门大学 大数据技术原理与应用 参考 资料
教育 -大数据技术原理与应用-章节资料考试资料-厦门大学[] 第1章 大数据概述 单元测验 1.[单选题]第三次信息化浪潮的标志是: A.个人电脑的普及 B.互联网的普及 C.云计算.大数据.物联网技 ...
- 从源代码角度看Struts2返回JSON数据的原理
2019独角兽企业重金招聘Python工程师标准>>> 前面一篇文章其实只是介绍了如何在Struts2中返回JSON数据到客户端的具体范例而无关其原理,内容与标题不符惹来标题党嫌疑确 ...
- HDFS读写数据的原理
目录 1 概述 2 HDFS写数据流程 3 HDFS读数据流程 目录 最近由于要准备面试,就把之前学过的东西好好整理下,权当是复习. 下面说下HDFS读写数据的原理. 1 概述 HDFS集群分为两大角 ...
- 深入了解Struts2返回JSON数据的原理及具体应用范例
来源:http://yshjava.iteye.com/blog/1333104 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具体应用了,但苦于一 ...
- 【Vue2.0】—Vue监视数据的原理(五)
[Vue2.0]-Vue监视数据的原理(五) <body><div id="root"><h1>学生的基本信息</h1><bu ...
最新文章
- Spring AOP切点表达式详解
- [android] 隐式意图的配置
- 209. Minimum Size Subarray Sum 长度最小的子数组
- Bootstrap系列 -- 41. 带表单的导航条
- java 文件目录_Java——文件及目录File操作
- 腾讯大数据之TDW计算引擎解析——Shuffle
- Windows下的Crontab表达式解析DLL的使用
- python群发邮箱软件_maily:命令行邮件(批量)发送工具
- idea package放在什么位置_NBA现役球员大排名,你会把20岁的东契奇放在什么位置?...
- sql数据库去重语法_浅谈sql数据库去重_MySQL
- 【学术】论文读不懂怎么办?
- 简单记录jasypt使用
- 车路协同场景身份认证及 V2X 通信安全保障
- RadioButton设置图片大小
- 设备功耗计算专题《低功耗实战篇,全志XR808连接AP的最低功耗研究》
- 在线破解hash的优秀网站
- 解决Error response from daemon: conflict: unable to delete bf6a13bd36ca (must be forced)
- ttl传输种过期_ttl传输中过期是什么意思怎么解决
- 如何使用计算机上合并计算方法,excel合并计算的方法步骤详解
- 北京市高等教育自学考试2023年教材信息表
热门文章
- Wireshark 的使用 —— 过滤器(filter)
- 夏至与北回归线的故事
- 面向对象——抽象基类
- java 创建类带泛型_java-创建泛型类列表
- opencv 高通滤波和低通滤波_一阶低通滤波原理详解
- python课程开课吧怎么样-开课吧最新廖雪峰Python商业爬虫课程,全套完整课程资源下载...
- python是什么专业-Python是个什么鬼?为什么985学生都要学它?!
- python使用-使用python进行数据清洗
- python下载-Python下载和安装图文教程[超详细]
- 免费python自学攻略-自学python二三事