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)。
![](https://img2020.cnblogs.com/blog/103060/202004/103060-20200402094642952-518549746.jpg)