不太清楚你指的是web开发还是客户端开发。 web端确是有强大的控件库,但是有个不可避免的原因就是越强大,越难以修改和自定义。 客户端不太清楚,目前应该是以wpf为主,感觉应该是自己手写比较多吧。
没想的那么复杂。参见俺的文章 只学一点点:我的技术学习策略,基础代码也就1000行左右,不牵扯到文字输入的地方,都可以搞定。这个东东,俺做flash开发时实现了一套,做c#开发时,实现了一套(兼容winform,iOS,android),做html5开发时,在 html5 canvas 上实现了一套。复杂的UI需求,俺都直接上这个东东,基于它,俺的 winform 程序跟 wpf 程序一样漂亮。
核心:
(1) 绘制API,2D的API各个平台大同小异,甚至连函数名称都一样。核心API就那么几个,掌握了能用一辈子;
(2) 基础的元件,DisplayObject,这个就是把绘制API的第一层抽象,抽象出x,y,width,height,等等最基础的东西,这样一般思考问题时,就从物理层(绘制API)上升到逻辑层了;
(3)容器,容器继承自DisplayObject,又能向里面添加 DisplayObject,容器实现UI元件的组合逻辑,包括分层,visible,传递绘制上下文时自动做好坐标转换,让传入DisplayObject的绘制坐标系是它的局部坐标系;
(4)舞台(Stage),舞台嵌入在平台中,负责将平台的原生事件转换成容器事件和元件事件。
核心就这四个类,抽象好了,几乎打遍天下。对每一个平台而言,底层渲染层API略有区别,平台的事件层API略有区别,元件和容器层的逻辑都是一样的。特灵活,开发效率也不错。
文本输入我没实现,这个实现工作量很大,写好不容易。其它的,什么花式花样的UI需求俺都能用这套东西搞定。
html5 下用 haXe 实现的,还是10年-12年间的事情。
具体演化过程:最初是做在线试头发,用的是Flex的UI库,后来做在线化妆,因为Flex太重了,而Flash自带的UI又太丑了,我自己就搞了套UI,用俺的这套UI我做了在线化妆,大头贴,多款视频应用,电子杂志应用,在线编辑视频字幕应用。后来,电子杂志的客户需要支持平板电脑,我又把它移到html5上了,自己搞了套渲染引擎,把电子杂志应用给移植了过来。后来做winform下开发,因为winform的控件都是windows窗体,不但太重影响性能,并且局限性很大,界面上有太多元素容易歇菜,我又把这套弄到winform下,今年上半年试了下把这套东西移植到xamarin/iOS, xamarin/Android 下,也搞了个Demo。去年客户要做手机化妆,我又用java搞了套。
东西越做到后来越凝练,都是 OO 代码,特别好翻译,业务逻辑也大同小异,就是语法不同。