最近在忙着张罗游行和抵制日货的事情,好久没有写点东西了。
AJAX在不远的将来将成为热点的技术,看来是愈来愈厉害了,但在这方面还是缺少一个杀手级的框架出来。能够出来一个opensource的Ajax框架,才会更好的帮助Ajax成长。
两个想法:
- javascript class model
- javascript是基于prototype的面向对象语言,虽然足够的灵活,但基于class的OO技术已经深入到每一个程序员的头脑,因此有必要在javascript上建立一个模拟class的模式,支持定义class/method的模式。
- 目前,包括smallclient,bindows等框架都定义了自己的class model。实际上,在prototype的基础上定义class倒也不是一件很复杂的任务。
- DOM javascript model
- 在DHTML中通过DOM来访问页面,但DOM却并不是一个简单、好用的API。比如说table=doc.documentFactory.createElement("table")这样的写法就不如 table = new Table() 这么简洁了。
- 如果定义一套适合于javascript的DOM类,可以大大的简化dhtml的开发工作。
- 可以参考JDOM的模式,a = html.Element.create("a", { href: value, target: value })
- div.append(a) 只对DOM做简单封装。
http://prototype.conio.net/ 一个非常简单的AJax库
http://judelib.sourceforge.net/ 一个DOM操作的库
构想的代码片断:
recordset = {
totalRecords : 100,
totalPages: 10,
recordsPerPage: 10,
currentPage: 3,
records: [
{ /*r1*/ }, {/*r2*/}
],
FieldDefs: [
{ label: "...",
css: ,
functor:
},
]
}
在服务器上返回这个JSON,在浏览器上,根据这个结果,生成一个Table。
组件: database.Table
{ setDataModel: function() } 根据 dataModel来产生一个Table
组件:database.Form 根据model来产生一个Form,即可显示,也可输入
在Table中支持多选:增加一个列(函数定义),当选中时,DataModel的值进行变化,在删除按钮的事件处理中,可以读这个Model中的值。
所以比较关键的是定义出一个好的DataModel。采用数据驱动的概念来进行开发。