当前位置: 首页 > news >正文

一种Web UI 的代码设计思路

相信 UI开发对 编程人员来说有时非常的头疼;


作为一个 Asp.Net 程序员,前台网页不允许使用 服务器控件,这是共识;

但是对于网站后台,很多公司则没有这个要求,因为网站后台因为使用的人数较少,所以对效率和服务器造成的负荷都可以不加考虑;


对于网站后台的页面和逻辑的编码,有时因为得不到美工的支持,所以会非常头疼:好不容易写完了 后台逻辑代码,现在还要自己拖控件,自己写绑定,这时非常糟糕的事情;


本文章仅写给自己,提出一种思想,有时间有自己 实现一哈:(不代表任何权威)


1. 统一继承 IAjaxControl 接口,实现一下属性函数:
TriggerMsg 触发消息:指定的消息 将会触发 当前控件的刷新行为;
RefreshType 刷新类型:当该控件刷新时,将会被刷新类型枚举:AjaxHtml,AjaxValue,AjaxJson,Html,Value,Json
ChangedMsg 当控件值发生变化时,将会发送的 消息,该消息将被作为 其他控件的 TriggerMsg;
LoadHtml 当 RefreshType=RefreshType.AjaxHtml 时,在加载时,显示的Html;
AjaxUrl 控件被要求重新刷新时,请求的 Url 地址;
PostParams 控件被修改发送 改变消息时,将会同时提交出去的参数;
AjaxProperty 将会被Ajax返回值,赋值的属性;


2. 但是,上面的设计方案,每个控件仅支持一种Ajax调度方案;
比如,文本框控件,支持了 TextBox 文本改变事件,则不支持其他事件;
当然,一般控件也只有一个核心事件;


3. 调度模式:
需要一个Ajax 的Js简单库,注册 服务器控件的各种请求事件,响应事件并进行调度;

4. 可不可以将 1. 中属性封装到 AjaxSchedule,而控件则 仅需实现这个 对象的集合;
AjaxSchedule 不是一个实体数据类,而是服务器控件:在HTML端,会生成 指定的调度格式;
服务器控件中包含服务器控件,这个需要研究....

5. 控件 和 Ajax 之间可以取消掉 1. 中的接口,让 控件 和 AjaxSchedule 无任何关系,让 AjaxSchedule 自己来确定自己的调度,Ajax 库则只对 AjaxSchedule 进行解析处理;

6. 之前在 CSDN 论坛中提出的 Ajax调度转发 机制,可以将 Ajax 的调度插件化;


加上,前一篇文章中说的,面向概念编程的UI概念化,加上现在的 Ajax 整体交互调度,相信可以为后台的开发 大大的增加效率;




嗯的,找时间实现一哈!!!



舒小龙

2012-02-14 14:54



相关文章:

  • cocos2d-x基础三 播放动画
  • 在SVN中偷偷发个LGame的C# Beta版(意味着支持WP7和XBOX之类了)
  • C#实现WORD文档的内容复制和替换
  • Java与C#开发上的一些差异与转换方法
  • 浅谈我心中的软件开发
  • 十三款著名跨平台游戏引擎(原文翻译部分转自游侠网)
  • 发个XNA中文字体生成的辅助小工具
  • 教你如何迅速秒杀99%的海量数据处理面试题
  • Android开发性能提升
  • Java游戏源码大礼包(清明有爱强化版)
  • 浅谈STG游戏的开发(4月8日更新,已补全内容)
  • J2me游戏引擎的基本构成
  • 感知世界触景生情——增强现实技术
  • Android游戏源码合集(主要是AndEngine和Libgdx的)
  • 继续群发Android游戏源码(再发15款)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 《剑指offer》分解让复杂问题更简单
  • angular2 简述
  • css的样式优先级
  • egg(89)--egg之redis的发布和订阅
  • gcc介绍及安装
  • jquery ajax学习笔记
  • Js基础知识(一) - 变量
  • MySQL数据库运维之数据恢复
  • React-redux的原理以及使用
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • webpack入门学习手记(二)
  • 从重复到重用
  • 基于Android乐音识别(2)
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 世界上最简单的无等待算法(getAndIncrement)
  • 物联网链路协议
  • 新书推荐|Windows黑客编程技术详解
  • 在weex里面使用chart图表
  • 白色的风信子
  • 阿里云重庆大学大数据训练营落地分享
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​人工智能书单(数学基础篇)
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #QT项目实战(天气预报)
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (175)FPGA门控时钟技术
  • (3)nginx 配置(nginx.conf)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (windows2012共享文件夹和防火墙设置
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (转)全文检索技术学习(三)——Lucene支持中文分词