构建一个前端库-架构分析

  radf是此库命名,意为快速应用开发框架。

  radf按类的功能分为Data、布局、数据组件、工具。

  Data类:用于绑定从服务器端传来的数据。

  布局:有Pannel、StackPannel、GridPannel、Splitter、TabForm,用于页面元素风格构建。

  数据组件:MsgBox、Input、Radio、CheckBox、Select、Image、gridData、Portlet、RollerMenu、Calendar、DateInput、MoveWindow、Marque、FusionCharts后面五个是我做的,嘿嘿

  工具: clone、copy、dataUnbind、formatNumber、getHelp、serializeObject、setHelp、toDate、toBorder、releaseDate、getNameFromList、getValueFromList

  此应用框架意义在于,封装解决因浏览器兼容性造成的差异、减少开发工作量,使开发人员只用关注业务及简单的处理页面摆放。

  radfBase文件是此类库入口:

  类库中大量使用以下方法

  (function(){})()   立即加载此函数,在jQuery源码中也是如此。

  //设置应用程序加载入口
  window.onload = _iniApp;
  function _iniApp() {
    if (radf.main) radf.main(radf);
  }

   将入口函数绑定到onload下,页面准备完成时调用,此时应用页面为以下形式:

  __radf.main = function (radf) {

  radf.Root().load();
  }

  此时应用会自动加载所有被实例化的Radf对象,完成加载。

 

  类库中有两大基类、1、Date  2、Control

如果使用过MVVM模式便会知道,xaml文件中界面View绑定对应的ViewModel后,改变View上面的数据,与之对应的ViewModel便会产生相应的变化。

并且,ViewModel可以被多个View绑定,与之产生的效果就是,绑定同一个ViewModel的View改变其中一个的界面数据,另外的View也会产生相应的变化。

那么这个方法的实现是什么呢?

new Control({DataSource:data});
当这样一个Control绑定了data之后,
Control.data.controlArray.push(this);
将这个Control放入data的controlArray,
当我们的界面元素操作后发现数据变动时,
触发this.DataSouce.handleControl方法。
此方法用于重新加载所有被绑定对象的数据。
for(i in this.DataSource.control)
  this.DataSource.control[i].value = _value;

到此,mvvm模型基本建立。

posted @ 2012-12-19 18:32  Bug罗  阅读(1355)  评论(0编辑  收藏  举报