由sencha touch的数据模型想到...
来源:互联网 发布:刷机精灵for mac 编辑:程序博客网 时间:2024/05/02 00:50
Relation Sencha Touch Data Model
misko_lee
Sencha Touch 是第一款HTML5开发框架。用于跨平台的移动终端应用开发。拥有一系列原生试图界面,可以让你的应用看上去就像是用JAVA或者Object-C开发的本地应用,是不是很酷!
如果你之前有听说过ExtJs,那么对于Sencha Touch的学习是非常快的。Sencha Touch可以当作ExtJs的移动版。
对于视图层,有过android,iphone开发经历或者使用经历的人都不会陌生,ListView,TabPanel等组件我们每天刷微博的时候就在使用。本文主要谈谈数据层。
一个应用的源数据要么来自本地存储(文件系统,本地数据库),要么来自网络。程序将数据进行各种各样的解析运算最终展现在我们面前。
我们知道HTML5支持Local数据,而网络数据则可以轻松的使用ajax或者web sockect获取。这样,HTML5支持了所有的应用数据来源。
我们知道,web 请求一般有XML,JSON两种数据格式。JSON几乎要把XML在服务器数据传输的功能取代了。Weibo open API最初还支持XML的API请求,现在只剩下JSON了。
因为数据来源的多样性,我们不能直接在程序中使用源数据。如果某天你的应用必须使用XML的时候,那么你那基于JSON的应用是不是得重写。
Sencha 提供了一个很好的机制解决了这个问题。这就是数据模型层。类名Ext.data.Model。
Ext.data.Model的功能就是将数据源进行字段映射。
这是一种很好的多态思想的应用。
如下代码:我们定义了自己的模型类
Ext.define('myNameSpace.UserModel',{
Extend:'Ext.data.Model', //继承超类
Fields:[{name:'user',type:'string'}, //字段定义
{name:'age',type:'int'}
]
});
以上定义了一个数据模型。我们可以当作数据库中的一张表结构。
数据则保存在Ext.data.Store上。Store类可以当作就据库中元组的集合。
Ext.create('Ext.data.Store',{
Model:'myNameSpace.UserModel', //绑定一个模型类
Data:[ //数组作为数据源
[user:'misko',age:16],
[user:'liang',age:14'],
],
Proxy:{ //Ajax请求作为数据源
Type:'ajax',
Url:'test.php',
Render:'json'
}
});
数据源还可以支持更多格式,甚至你自己定义的格式。
这样,我们已经做到了程序数据与数据源的分离。我们程序中使用的是Model所定义的结构,Store则绑定了对应的数据模型与数据源。
读者不需要理解上述代码的工作机制,我想借这样一个优秀的数据模型设计的例子来说明数据源多态的思想。
在我们的程序中,应该尽量避免直接使用源数据结构,而是为应用定义一个程序通用的数据结构,看上去像是Ext.data.Model所定义的那样。
更往外扩展的说就是程序的可移植性,可维护性的问题了。
misko_lee
Sencha Touch 是第一款HTML5开发框架。用于跨平台的移动终端应用开发。拥有一系列原生试图界面,可以让你的应用看上去就像是用JAVA或者Object-C开发的本地应用,是不是很酷!
如果你之前有听说过ExtJs,那么对于Sencha Touch的学习是非常快的。Sencha Touch可以当作ExtJs的移动版。
对于视图层,有过android,iphone开发经历或者使用经历的人都不会陌生,ListView,TabPanel等组件我们每天刷微博的时候就在使用。本文主要谈谈数据层。
一个应用的源数据要么来自本地存储(文件系统,本地数据库),要么来自网络。程序将数据进行各种各样的解析运算最终展现在我们面前。
我们知道HTML5支持Local数据,而网络数据则可以轻松的使用ajax或者web sockect获取。这样,HTML5支持了所有的应用数据来源。
我们知道,web 请求一般有XML,JSON两种数据格式。JSON几乎要把XML在服务器数据传输的功能取代了。Weibo open API最初还支持XML的API请求,现在只剩下JSON了。
因为数据来源的多样性,我们不能直接在程序中使用源数据。如果某天你的应用必须使用XML的时候,那么你那基于JSON的应用是不是得重写。
Sencha 提供了一个很好的机制解决了这个问题。这就是数据模型层。类名Ext.data.Model。
Ext.data.Model的功能就是将数据源进行字段映射。
这是一种很好的多态思想的应用。
如下代码:我们定义了自己的模型类
Ext.define('myNameSpace.UserModel',{
Extend:'Ext.data.Model', //继承超类
Fields:[{name:'user',type:'string'}, //字段定义
{name:'age',type:'int'}
]
});
以上定义了一个数据模型。我们可以当作数据库中的一张表结构。
数据则保存在Ext.data.Store上。Store类可以当作就据库中元组的集合。
Ext.create('Ext.data.Store',{
Model:'myNameSpace.UserModel', //绑定一个模型类
Data:[ //数组作为数据源
[user:'misko',age:16],
[user:'liang',age:14'],
],
Proxy:{ //Ajax请求作为数据源
Type:'ajax',
Url:'test.php',
Render:'json'
}
});
数据源还可以支持更多格式,甚至你自己定义的格式。
这样,我们已经做到了程序数据与数据源的分离。我们程序中使用的是Model所定义的结构,Store则绑定了对应的数据模型与数据源。
读者不需要理解上述代码的工作机制,我想借这样一个优秀的数据模型设计的例子来说明数据源多态的思想。
在我们的程序中,应该尽量避免直接使用源数据结构,而是为应用定义一个程序通用的数据结构,看上去像是Ext.data.Model所定义的那样。
更往外扩展的说就是程序的可移植性,可维护性的问题了。
0
上一篇:虽有遗憾,但无后悔
下一篇:爱他,让他来兄弟连,恨他,也让他来兄弟连
相关热门文章
- phpStudy 2013下载,PHP5开发...
- 草和谐榴社区caoliushequ...
- 灵芝的种类和图片
- 为PHP添加GD库支持
- 秋天的惆怅
- 大家都是用什么来管理hadoop集...
- 网站被人挂了吗,添加了些程序...
- Nginx如何保证不走宕机的那个...
- 大家谈谈MYSQL客户端和服务器...
- 以下代码运行后为何会输出5?...
给主人留下些什么吧!~~
评论热议
- 由sencha touch的数据模型想到。。。
- 由sencha touch的数据模型想到...
- sencha-touch的使用
- Sencha Touch 的基础知识
- 由本子想到的
- 由忧郁想到的
- 由电车男想到的
- 由MBV想到的
- 由“枣子”想到的
- 由 setMeidatime() 想到的
- 由ff想到的
- 由HelloWorld想到的
- 由观察想到的
- 由面试想到的
- 由自行车想到的......
- 由《变形金刚》想到的
- 由团队想到的.......
- 由PageRank想到的
- 也谈屌丝
- 数据结构--哈夫曼树
- 项目小感
- 虽有遗憾,但无后悔
- 《装饰模式》
- 由sencha touch的数据模型想到...
- 爱他,让他来兄弟连,恨他,也让他来兄弟连
- 【捷哥浅谈PHP】第十二弹---NoSQL数据库之MongoDB的CURD操作
- python学习笔记--3
- “兄弟连”向未来看齐
- 我心有猛虎,细嗅蔷薇 下
- easyui-layout中的收缩层无法显示标题问题解决
- 5个月和时间赛跑
- 吐槽面试经历,最后成功拿到4个offer,很受用--看完之后说一下自己的看法吧
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
沁园维修电话
沁园饮水设备
沁园集团股份有限公司
立升和沁园哪个好
沁园净饮机怎么样
沁园雅舍房价
沁园饮水机售后网点
沁园饮水机使用说明书
沁园饮水机质量怎么样
沁园饮水机客服电话
沁园软水机怎么样
沁园净水器ru185f价格
沁园净水机售后
沁园净水机怎么用
沁园无热胆饮水机
万科金色沁园二手房
沁园净水器厂家电话
楚天都市沁园房价
沁园饮水机使用方法
安之星和沁园哪个好
御沁园公寓房价
沁园净水机换滤芯
沁园饮水机怎么烧热水
沁园小区在哪里
沁园净水器185系列
天洲沁园二手房
沁园净水器安装电话
沁园净水器服务电话
沁园春雪伴奏
沁园春雪ppt免费下载
沁园春雪全文
沁园春雪舞蹈
沁园春雪硬笔书法
沁园春雪正楷书法作品
沁园春雪拼音
沁园春雪歌曲
沁园春雪原文带拼音
沁园春雪草书
唐国强朗诵沁园春雪配乐
沁园春雪歌词
歌曲沁园春雪