前端是设计到代码的搬运工?(下)
前端是设计到代码的搬运工?(下)
前文讲到了随着时代的发展,前端工程师开始负责更大范围的工作,包括但不限于:
- 根据@1x的图启发式推断@2x甚至@3x的设计
- 猜间距、字形、字号
- 脑补动画关键帧
- 和设计师沟通px/pt/dp换算规则
就算做了这么多事,交付的时候,往往会被设计师劈头盖脸的喷一句:“这是什么啊,你到底看我的设计了吗?”
当然扔一张固定分辨率psd/png就不管了的这种设计流程还处在原始蛮荒状态,我十多年前和公司的设计师做官网的时候就是这样。负责的设计师同事会“一跟到底”,拉张爆菊椅做在前端工程师边上,每个元素按像素扣下来,最终达到一个可以发布的水准,但消耗大量的时间和精力。
当然今天借助工具如sketch Measure或者Zeplin进行自动标注之后,再按如下分别出稿:
- iOS一个,因为ios的单位是pt,导出的切图是3张图;(x,@2x,@3x)
- andriod一个,因为andriod的单位是dp,导出的切图是5张图(mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi)
就没问题了吧?
当然不是。
需要的是——
设计资源管理
现在app一周更新一个版本都算慢的,网站更是有可能一天更新好几次。在如此频繁的生产新UI,诸如按钮,样式,文本等设计资源在多个设计师之间频繁创建,费时而且需要管理差异。
如果能有个资源库,约定好出入规则,比如Google的Material Design和阿里的Ant,大家都往里放,需要的时候直接从库里拖出来多好?
大公司都是这么做的,不光是大公司,复杂到一定程度的app/网页就应该有全局的设计资源管理。然而问题又来了 :设计图一般都是.psd/.sketch格式的,版本控制比较笨拙,diff什么的完全无从谈起——而且,也不好搜索不是吗?
这就引出了——
让设计师写点代码
Airbnb出品,核心是Paint with code,通过写react代码来在sketch里实时渲染(得益于sketch43开源了文件格式),无图无真相:
左边是Visual Studio Code, import了render对象,可以实时沟通本地安装的sketch,在编辑器里写完jsx/css之后一按cmd+s,右边的sketch里就会刷新刚改的效果。
之前如Dreamweaver的功能是通过设计,导出代码。react-sketchapp正好相反,通过代码完成设计。
看似强逼设计师学代码,无谓增加设计师工作量,但要说Airbnb对设计师不友好,那还有友好的吗?表面是奇特的方式,背后是全新设计的工作流:
- 组件设计直接在代码层级完成,sketch文件可以拿走当作snapshot,或者打印或者直接看
- 定稿后,设计以代码形式提交git,方便追踪和比较
- 统一的组件库代码可以直接import到项目里,前端工程师可以发挥最大效率
在设计师付出学习成本掌握代码绘图后,之前内耗巨大的设计稿前端实现工作,就这么消失了…(看来我应该晚生个十几年)
当然这么做的前提是:公司支持!估计也只有Airbnb这种笑傲江湖又不差钱的公司,才能推行这种工作流吧。
未来展望
当然react-sketchapp不是进化的终点,设计工具到代码双向交互才是大家喜闻乐见的。不过估计到了该技术成熟的时候,编程已经可以由计算机代劳了,就是不知道设计是不是还非得人类不可。
至于现在为什么不行?Apple的XCode已经在这条路上奋勇前进很久了,然而开发者都不怎么喜欢用它。微软也在全功能的Visual Studio之外另辟蹊径,拿掉了设计功能,专注Code取得了成功。
微软和苹果都不行,看来想取得突破,不是堆钱堆人就能实现的。