他不追流量,却让每条推文都成技术布道现场
|
去年十月,老杨在会议室第三排啃冷掉的葱油饼,饼渣掉在键盘上,他左手按着F12没动,右手捏着半块饼往嘴里送——那天下午三点,我们盯他发的第七条推文,标题是《用CSS @layer 解耦你的微前端样式冲突》,底下评论区里三个字:「求源码」、「已抄」、「我司下周灰度」。我说这话时窗外在下那种黏糊糊的秋雨,雨刮器卡在四十五度角,嘶啦嘶啦响了十七分钟,没人关窗。 我原以为他就是那种靠发Demo截图混转发的——结果点开那条推文,第一帧动画居然是个可交互的layer嵌套关系图谱,鼠标悬停能展开CSS specificity计算路径;第二屏往下拉三步,弹出一个实时diff工具,你粘贴任意两个微前端子应用的style标签,它当场给你标红冲突项、绿标隔离成功区、灰标“你以为隔离了其实没”的伪隔离层。老杨嚼着饼说:「这玩意儿跑在service worker里,本地调试都不用开dev server」。我没信,当场搭了个vite demo去试,结果发现他连Web Workers的messagePort transfer逻辑都塞进去了——就为让diff快零点二秒。但那个transfer到底要不要加ArrayBuffer?他说:「我说不准」。 他真不追流量。上季度末平台后台数据我偷偷扫过一眼:他账号周活不到八百,单条推文平均转发十九次,还常被误标成「技术文档搬运号」。可上个月风控团队凌晨两点打电话过来,说某银行APP的H5埋点突然全量降级,查日志发现所有上报请求头里都多了一行`X-Debug-Style-Layer: base>vendor>app`——那是他推文里随手写的header示例,被人当真实字段抄进生产环境了。接电话的是小马,一边揉太阳穴一边把耳机音量调到最大,怕听见隔壁测试组骂「前端又改header不提PR」。挂电话前他补了句:「你猜他们用的什么构建工具?」我摇头。他说:「Parcel 2.8,三年没升级」。我愣住,手里的咖啡凉透了,杯底结了一圈浅褐色渍。 优胜劣汰?真不是口号。他有次直播拆解一个低端机白屏问题,镜头怼着一台红米Note 8 Pro,帧率监控面板数字跳得跟心电图似的,最后定格在五帧。他没讲V8优化,没提Lighthouse打分,就拆开一个按钮点击事件——三十七行代码,从触摸start到click触发,其中十二行在等一个async函数resolve(因为封装层硬塞了个`await nextTick()`),而那个nextTick底层走的是setTimeout(fn,0),在该机型上平均耗时四百一十二毫秒。他说:「这里删掉,首屏快一百七十毫秒;但别删,留着——因为下游有个运营ABTest系统强依赖这个时间戳做曝光校准」。说完切屏,展示另一台iPad Air 2上的相同页面,帧率稳在五十八。老杨盯着屏幕右下角系统时间,说:「这两个设备中间差六年,但我们代码只写了一份」。这时候办公室空调坏了,嗡嗡声忽大忽小,像接触不良的电容。
文章配图,仅供参考 有个细节你肯定想不到:他所有推文的代码块语法高亮,用的都不是Prism或highlight.js,是他自己用Web Worker跑的Tokenize引擎,支持动态主题切换且不阻塞主线程渲染。为什么?他说:「编辑器预览时高亮卡顿,会让读者觉得代码本身很重」。但上个月有个实习生问他:「Worker里跑Babel parser会不会内存泄漏?」他摇头:「这问题我没测过,不过上周六我在家修洗衣机,排水泵异响,换了三次滤网才弄明白是叶轮卡了塑料绳——有些事,得先听声儿」。桌上的外卖盒还开着盖,是宫保鸡丁,花生米浮在酱汁上,一颗都没沉下去。组件库选型撕逼那天,会议室投影仪反复黑屏,A组甩出React 19 action机制对比表,B组拿Vue 3.4 suspense fallback策略对冲,老杨坐在最后一排,手机支架歪着,正在回一条推文的私信:「@张工,你提的scoped CSS失效问题,是用了postcss-preset-env导致@layer未被识别,建议先关插件再验证」。他回复完抬头,说了句:「你们撕的是未来三年,我刚修的是昨天下午三点上线的坑」。说完拎起帆布包走了。包带子断过一次,用电工胶带缠了两圈,蓝黑相间,像一段没合拢的flex-wrap。 我敢打包票:他最近三条推文里,每一条的CodePen demo都至少有一个浏览器兼容性bug——不是功能错,是故意留的。比如那个layer图谱,在Firefox里hover效果延迟三百毫秒,在Chrome里精确同步,就为了让看的人手动打开devtools去看User Agent差异;再比如他用::marker伪元素做步骤指示器,在Safari里会闪一下,必须加will-change: contents才能稳住。这些不是疏忽,是布道钩子——钩住真动手的人。至于其他人?刷到就划走,流量当然低。但你要是真跟着他的节奏调通了那一段polyfill,你会在某个深夜发现,自己顺手给公司内部文档写了份layer最佳实践,还配了动效演示页。现在它挂在内部Wiki第一页,标题叫《别再用!important了,我们试过了》。 这周我打算重装一遍Mac的node环境,把nvm换成volta,顺便删掉所有全局安装的CLI。不是为了提速——是为了试试他推文里提到的那个新东西:pnpm patch命令加--save-dev --no-save-lockfile组合拳,听说能绕过lockfile导致的CI构建失败。但我还没敢试。先去翻翻他上月二十三号那条推文的评论区第二页,有人贴了张截图,说在某省政务云环境里跑他那个diff工具报错,错误堆栈第一行是:`RangeError: Maximum call stack size exceeded`。后面跟了三行回复,全是他在手写递归改非递归的思路。我没有截图,也没保存,就盯着看了两分钟。窗外雨早停了,对面楼顶晾衣绳上挂着三件衣服,两件湿的,一件干的,风一吹,干的那件晃得最厉害。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

