UI分离引擎的设想

对于前端页面和后端代码的分离,ASP.NET WEBFORM和ASP.NET MVC都在不同方面做了努力。

在这里提出一些自己初步的设想,只是初步的设想,对各种质量特性并没有经过验证,就不放首页了。

 

我们的目的是:

 

1)产品或美工负责页面布局、样式以及基本的交互行为(不依赖业务逻辑的交互)。

2)开发人员只负责数据的填充。

3)产品提供的html不需要引入代码进行二次包装,直接使用。

 

您可以觉得这就是模板的方式,模板的方式可以解决,但主要的问题是:

 

1)需要产品或美工熟悉标记。

2)不太能实现根据动态的逻辑来实现不同的数据呈现。

 

能不能反过来,产品在给出html+css+javascript之后,我们的开发人员只负责填充数据或是根据业务逻辑填充不同的数据?

 

我的设想如下:

1) 产品提供的html+css+javascript直接放在目录下用。

2) 由一个Handler来处理所有请求,比如list.shml,然后找到目录(配置为不可以直接访问)下的html。

3) 加载html到缓存中,解析DOM。

4) 开发人员对每一个页面提供一个cs文件,实现数据填充。

怎么进行数据填充呢?首先从数据库加载要填充的数据,然后指定数据填充到哪里。

比如 list 已经是一个产品集合,调用框架类似 list.Fill(func, func) 的方法填充数据,第一个参数传入一个方法指定填充的数据格式,比如p => p.Name,后面一个通过jquery选择器指定要填充的对象。框架维护要渲染的数据以及jquery代码两个数据集合,分别渲染到页面上。

也就是页面由三个部分构成:html模板 + json数据 + jquery代码。开发人员用c#代码写jquery代码和获取数据的代码,然后交给框架去把数据和填充行为放到页面上。

 

甚至,可以在项目中制作一个代码生成工具,每次编译自动根据html代码生成其中所有的id和class名等用于jquery定位,这样代码中选取器也不需要手动写,可以在编译的时候发现可能存在的javascript问题。

对于这种模式,还可以反过来,可以把html文件放在独立的服务器上,自动ajax请求shtml文件获取数据和填充脚本,然后执行脚本进行数据异步填充。

这样的话,产品写html/css/jquery,开发写c#的jquery和数据访问,大家甚至独自维护自己的静态和动态服务器。

 

您可能要说这不就相当于全ajax的页面吗,其实这么做的好处是,开发人员可以直接写了c#的数据访问代码后又直接写c#的js代码,由框架确保了这些脚本和数据的呈现,可以利用大量自动提示的特性,不会出现前后台不一致的现象(不需要根据json的格式写客户端的脚本文件,只需要在服务端根据c#对象的格式写代码,这和asp.net的控件方式有什么区别?其实理论上来说相当于dom+jquery版的控件操作和访问,好处是可以直接使用html)。

posted @ 2010-09-30 14:13 lovecindywang 阅读(...) 评论(...) 编辑 收藏