个人经手过几个富交互的应用,深有体会,很多用起来觉得「这有什么」的功能,背后都隐藏着大量不为人所知的复杂。
举个例子,算不上极高吧,但也是一个容易被低估的功能——评论列表。反正偶经手的上一个评论列表做了一个人月……
需求大致如下:一个面向专业摄影师、视频工作室等创意类团队的产品,提供素材预览功能的同时,支持评论校审,还能支持一些常见的圈点(类似截图之后画个框之类的)。
首先要有基本的CRUD功能(废话)
设计师不想分页,觉得体验不好,但长列表依然需要优化,那么虚拟列表走起。
评论包含状态(校审中、重制中、已完成、……),要能筛选,但设计师不接受接口查询的延迟,希望能即时反馈,所以不能「点击加载更多」,那就只能前端筛选。
评论和圈点有关联,希望点击时候能联动,点击评论(如果有圈点)要能高亮一下对应的圈点,反之,点击圈点要能滚动到对应的评论。那么除了数据上的关联,还要各种DOM操作、滚动计算。
输入内容时,可以艾特成员;艾特时要有选人的Dropdown,被艾特的人要收到通知,退格键删除时候如果遇到艾特的部分,要能删除整个而不只是一个字符,方向键要能跨过去,选中的时候要能整个选中。那么自定义Dropdown走起、字符串检测走起、光标操作走起、通知服务走起。
收到通知的成员,点击通知中的链接,要能跳到对应评论处,并高亮显示相关内容。那么URL设计、滚动计算、各种异步流控制。
输入过程中,鼠标移出去做一些特定操作的时候,光标要能停在输入框原本的位置,不能失焦(技术上必然会失焦,只是事后立即又定位回来,做到视觉上的不失焦),但点击“页面空白处”要能正常失焦。那么鼠标事件流走起,冒泡路径管理、焦点位置计算。
评论输了一半,页面关掉了,下次回来要还能继续编辑,而且不只是最后一次的,要每一条都记录自己的内容。缓存管理走起。
评论的发布、删除、编辑、改状态、……都要快,不要卡一下(就是等接口响应)。那么乐观更新走起。
评论得要是实时的,这边发完那边页面上立即就能显示,类似IM的感觉。那么Websocket走起。
能够把「富交互」的操作实现得符合人类的直觉,让使用者感受不到计算的存在,觉得「就应该是这样」,并且能够完善地处理好使用者大概率不会遇到(甚至不会意识到)的异常场景,本身就是一个大工程。
很多团队在面对这类问题的时候,都会在「设计驱动」和「技术驱动」之间扯皮,最后以「先可用,再能用」为结论,把问题划进「有时间再说」的类别里,从此尘封。愿意坚持把好设计落地的团队,屈指可数。大家不缺好设计,Dribble上有那么多令人惊叹的好设计,但却很少有团队愿意花时间去把这些好设计给落地。
国内的风气比较注重两种发展方向,工程领域和科研领域,大部分偏业务的高级前端都属于前者,少数属于后者,会在某个技术领域深究去造轮子。在一个凡事都要乘以14亿的环境中,这种思想占据主流非常正常,毕竟前者是最直接的生产力,后者则是对未来的投资。
但设计的重要性同样不容忽视。大家讨厌广告,但不讨厌优秀的广告;都知道PS很强大,但更多的人选择美颜相机。大家不缺好的设计,也不是完全没有审美,但大家需要更多愿意把好设计落地的人,来让这个世界拥有更多美好的事物。只有良币自身足够坚挺,才不会轻易地被劣币驱逐。
希望能有更多的人,能够站在科技与人文的十字路口去看问题。这是当前时代背景下,一个非常有价值,很多人都知道,却依然非常空旷的地方。
还有些其它相关的领域,体验过就知道有多不容易了。
尝试自己实现一些通用组件,尤其是Table、Dropdown、VirtualList、DatePicker、Toast之类的,记得还有i18n、主题等定制的能力。
上Dribble找几个能让你Wow的动效,尝试去实现一下。
去用一下D3,实现一些效果。不是让你去实现一个D3,只是用一下。
有个叫Photopea的网站,是一个牛人实现的纯前端PS,可以想下怎么实现的。类似的还有Web版的AutoCAD