构建前端UI组件的新思路秒速赛车

2018-04-14

  我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。

  可以看出,Tabs、Slide和Carousel组件,彼此之间没有本质差别。封装出这三个类,仅仅是为了让开发者能方便快捷的调用(这些是高级API)。对于资深开发者来说,在实例化Switchable时,通过传入不同参数即可实现所需效果(Switchable是中级API)。

  Tabs组件,我相信任何一个前端开发工程师最多半天都能搞定,而且还能把延迟触发、动态加载等特性也给实现了。Slide组件也不难。Carousel组件看起来稍微复杂一些,但熬上一个通宵研究研究循环的实现,也不是什么大难题。

  按照GDPR的要求,处理个人数据变成了一项组织范围内的责任,但是在实际操作中,我们可以提供很多的支持工具,有助于在各个方面解决这个问题。

  插件的第二种实现方法是动态修改基础对象,可以重写某些方法,也可以利用AOP特性,将增加的功能织入到基础对象中:

  在插件的代码里,定义好init方法,以及监听相关事件(事件可以看成是一类hooks)即可实现需要增加的功能。

  举一个例子:国内的Web邮箱,无论是163还是QQ邮箱,都会让人联想起Outlook或Foxmail等客户端软件。这种模仿成本很高,然而带来的效果个人觉得却不是很好。反观Gmail,整体UI设计,简明轻快,但功能一点也不逊色。在Gmail里,看不到Tree,看不到DataGrid,脱离了这些传统UI组件的框框,将功能融入到Web元素里,反而让用户更自然、更高效。

构建前端UI组件的新思路秒速赛车

  只要符合switchable可切换特性的UI组件,原则上都可以通过Switchable实现。
唯一限制的是您的想象力!

  服务型领导力是一种哲学观,也是一系列实践,它丰富了个人生活,让组织变得更好,并且创造了一个更加公平和友爱的世界。在一个组织中,每一个团队和个人都需要回答这些问题:我为什么在做这件事?我的角色可以为这里带来什么价值?顺着目标前进可以获得更好的结果。

  给InfoQ中文站投稿或者参与内容翻译工作,请邮件至也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。

  前端UI组件的Web特性,需要我们打破传统思维,换一个角度,重新去思考UI组件的基本组成要素。换什么角度去思考?什么角度才是合适的?这离不开具体场景。下面以一个实例来说明。

  就算不相信买点比特币就能让你发大财然后迈向人生巅峰,你肯定听说过到处都有人说,比特币并不是未来,真正是未来的应该是区块链!无数人笃信这个观点。但本文作者Ashton Kemerling认为有关区块链的一切都是在做铺垫。区块链不能代表未来,这技术在未来也不会有大范围应用,至少目前还没有相关迹象。

  作者简介:王保平,前端架构师,网名射雕,花名玉伯。崇尚简洁而不简单,相信付出才有收获。就职于淘宝网UED部,忙并快乐着。个人博客:。

  比如,在Switchable的基础上,我们可以进一步实现Album(画报),用海文国际学习前端开发的亲,实现CoverFlow(仿iTunes的封面切换效果)等等。

  前端UI组件,目前流行的实现方式大多源自传统客户端的UI设计体系。无论是早期的Bindows,还是近几年兴盛的ExtJS,其UI组件都在模仿客户端软件,代码实现建立在复杂的继承体系上。好处是可以构建出和客户端体验一致的一整套UI组件,但弊端也很明显:组件长得都差不多,代码则继承太深,牵三挂四,不够轻便。

  通过这种方式,我们无需用到任何继承概念,没有super,没有extend,利用JavaScript的原生动态语言特性,就比较完美地解决了问题。

  这个组件,可以看成是触点为图片的Tabs组件。左右两个翻页,无非是调用next/prev方法。进一步:

  在这种新思路下,前端UI组件的基本组成要素已不是Panel、Memu和Button等传统UI基础单元,而是上面这些形容词。假设我们要实现一个可拖曳的可动态加载数据的可排序的表格时,或许像下面这样写一行代码就实现了:

构建前端UI组件的新思路秒速赛车

  上面对UI组件的思维角度是可切换(Switchable),这是一个形容词。世界各国机械工程师的年薪水。进一步思考,秒速赛车我们还可以得到以下形容词:

  插件的实现在JavaScript这种动态语言里是小菜一碟。至少有两种思路,一种是埋好钩子(hooks),插件根据钩子进行扩展:

  上面的几条里有一个很重要的概念:切换。所有这些组件的共同点是可切换的。如果我们实现了一个可切换(Switchable)组件,上面三种组件就都是特例了。

  如何才能让前端UI组件轻便灵活起来呢?首先得意识到Web UI设计有自己的独特性。Web页面可分为两种:一种是以展现信息为主的Web页面(web page),另一种是以操作信息为主的Web应用(web app)。对复杂的Web应用来说,可以采用ExtJS等类库来构建类客户端体验。但是,越来越多的Web应用已逐步脱离模仿客户端的阶段,开始从Web的独特性出发,将传统UI组件的功能融入到Web页面中。

  亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知。