IT技术博客大学习 共学习 共进步

What really it is, not what it is

岁月如歌 2010-07-14 09:42:04 浏览 2,244 次

    看了 infinte 的这篇文章:再见,Button;你好,Command, 和我这半年的一些想法很相近,本质是对 UI Controls 的再次抽象分类。

    传统的 UI 控件分类,体现的是 what is looks like, 比如 Menu, Button, Tabs, Toolbar, Dialog, Grid, Tree 等等。

    近期新近的一些 UI 类库比如 jQuery EasyUI, 开始逐步抽象出 Draggable, Droppable, Resizable 等 Base 功能点,这些形容词已经逐步开始从 what to do, not what it is 层面开始抽象。虽然 EasyUI 最后体现出来的依旧是 Menu, Dialog, Tree 等传统 UI 控件,但抽象层次和代码组织等已经逐步演化。

    前不久在 InfoQ 发过一篇文章:构建 UI 组件的新思路, 介绍了 KISSY 类库中,通过 Switchable 抽象,实现 Tabs, Slide, Album 等 UI 控件的思路,抽象的出发点是 what really it is, not what it is.

    结合 infinte 的想法,画了一个还比较混乱的图:

    UI 3.0

    或许 UI 3.0 的时代真的来临了!

    比如 Autocomplete(自动补全组件)或 Suggest(搜索提示组件),可以这样实现:

    Suggest = Widget.combine(DataProvider, Overlay, Selectable);

    在现实生活中,我们需要实现一个复杂实体时,经常用到的办法是将简单的实体组合起来。比如法拉利,是一堆汽车零件的组合。不同的法拉利,是选用的零件或组合方法有差异。类、继承等 OOP 概念,真的不是必须的。去掉后,世界照样清晰。

    抽象、思考,思考、再抽象,多想想 what really it is, and what to do, not what it is. 我相信,未来是 UI 3.0 的世界!

    infinte 的文章让我很激动,上面的想法还很不成熟,UI 3.0 是我杜撰的(当然,希望以后会说是我首创的,哈哈)。大家随意看看,极其欢迎讨论,提出你的想法与建议。

建议继续学习

  1. 构建前端 DSL (阅读 3,746)
  2. 用 CSS3 Transitions 实现动画 (阅读 3,363)
  3. 行进中的前端类库:KISSY (阅读 3,043)
  4. KISSY 近期更新 & 设计思路讨论 (阅读 2,965)
  5. 将你的 KISSY 程序移植到服务器端 (阅读 2,964)