不少回答都是在说设计的锅,我本身是前端开发,也说说我们的锅吧。

其实很多开发者即使代码水平不错但缺乏基本的人机交互思维,所以聊设计交付的时候总感觉不在一个频道上(只会推脱时间不够,那是产品、设计的活之类的

单拿还原设计稿来说,其实有一个很玄学的问题,就是即使交付的结果看起来没差,但有的人能够把握到设计的「主脉络」,而不是一味地追求所谓的像素级还原。

比如哪些元素应当同属于一个物料类,那它们边框,阴影,动效的表现就应当是绝对一致的,也就不至于发生照抄设计稿里某些只是由于设计师的不够严谨而出现的差异数值,这反而说明工程师不够严谨且懒……

也有些时候,设计师大概率会遗漏一些边界情况需要我们来补。举个例子,手指在按钮上按下按钮会出现点击态,然而如果保持按下再移动一定距离,在某些平台上,系统的触摸事件系统会使这次点击失效。交互思维较好的前端开发者就应当想到这种时候得让按钮回到正常态。因为显然点击态这个交互反馈的目的是告诉用户此时你松手了会发生事情。

基于以上,就会有一个很无力的事实,就是很多时候设计在 review 交付结果的时候,发现虽然哪哪看起来都差不多,但哪哪都差点意思,可是真要每个点都去吹毛求疵地去找开发撕,大家的 okr 都完成不了,那就这样吧……

本文会不定期更新,我遇到的觉得值得分享的 TypeScript 问题都会写在这里

如果你有一些问都不知道咋问的 TypeScript 问题,来这里翻翻或许能找到答案!

互斥类型

2019.09.19 新增

1
2
3
4
5
// https://github.com/Microsoft/TypeScript/issues/14094#issuecomment-373782604
type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never }
type XOR<T, U> = (T | U) extends object
? (Without<T, U> & U) | (Without<U, T> & T)
: T | U

使用上面的 XOR 范型,我们可以很容易地实现如下需求:

Fiddler Everywhere!
抓包,改请求,模拟网络状态,预览 Response…真滴好用!
UI 和 交互设计也相当奈斯(最喜欢它的如搭积木一般地配置拦截规则)再见吧,又丑又卡的 Charles