晚上十一点半。屏幕冷光直往脸上扑,隔壁邻居家的电视声隐隐约约传过来。我盯着满屏红字报错,手指搁在键盘上,半天敲不下去。代码逻辑压根没毛病,偏是某个老浏览器吃相不对,渲染出来的页面跟脑子里的样儿总差着半拍。手一伸,摸到抽屉底那本边角卷起、书脊快散架的旧辞典。封皮上印着HTML、CSS、JavaScript。当年我傻乎乎地以为,只要把规矩背熟,照葫芦画瓢,日子就能跟跑网页似的,严丝合缝不出岔子。这事儿大概就是这么个意思。现在想想,真挺天真。
辞典里的那套规矩,干净利落。标签得闭合。样式嘛,对齐了最好。逻辑这块,得密不透风。每个属性都甩给你个明码标价的返回值,每行指令底下都能扒拉出个所以然。它给你画了个饼:你喂它什么,它就吐什么。可人在这世上滚打几年就明白了,日子根本不是单向传送带。咱们按着别人的图纸去考公、进大厂、按部就班结婚,以为照章办事就能躲开所有坑。结果呢?现实偏爱跟你玩“兼容性”。你熬了三个夜排的路线图,行业一震荡,直接作废;你掏心窝子对谁好,对方可能连个“嗯”都懒得回。网上那些“人生算法”“自律手册”看着挺唬人,真套身上全卡壳。我觉得吧,现实这玩意儿,压根就不是个确定性系统。
书里掰扯DOM,教你怎么把页面上的每个控件拿捏得死死的。敲个按钮,弹框。填个数字,给反馈。那种把一切攥在手里的踏实感,确实让人上瘾。甚至有点病态。可现实里的岔路口和人情世故,哪有那么多严丝合缝的回调函数?咱们总以为自己在敲代码,其实手底下敲的全是散文。没分号。没闭合标签。连个逗号都经常忘了点。当然,我也不是劝大家都去写散文。规矩该守的守。样式该对齐的对齐。只是别真把自己当编译器。机器才容不得半点语法错误。人嘛,犯点错反倒显得活着。
说实话,早些年我见着“报错”就头皮发麻。总觉得是自己手生,哪块没对齐,哪条规矩没守牢。后头熬多了才咂摸出味儿。好多所谓的“bug”,其实是生活给你留的喘气缝。就像那些没按标准语法堆出来的老页面,扔在新浏览器里准得跑偏,可搁在某些老屏幕上,反倒透着股活泛劲儿。咱们天天琢磨着把自己打磨成一台零故障的机器,却忘了人哪能没点磕绊?得允许自己试错。留点冗余。给那些看着“不标准”的留白,也腾个地儿。不过话说回来,允许自己“跑偏”归允许。真要是底层逻辑全崩了,那可不是留白,是得重写了。这事儿不能全靠心态硬扛,该补的课还得补。
辞典封底印着AJAX,讲怎么让页面不重载也能偷偷换内容。这活儿简直跟我们长大一模一样。表面上看,日子还是那套老程式:打卡、下班、扒饭、躺平,页面框架纹丝不动。可底层的代码早就悄悄替换了。半夜里的辗转反侧,突然的豁然开朗,对某段关系的重新盘算,全在后台静悄悄发包。咱们哪用得着每次心里起风浪,就大张旗鼓地刷新整个人生?有些变化,本来就不需要弹窗给你看。我觉得吧,成年人的崩溃和重建,多半都是后台静默更新的。前台看着风平浪静。后台呢?早就把依赖包全换了一遍。
现在那本辞典早吃灰了,连书签都找不着了。我不死磕每一行是不是严丝合缝,也不怵页面偶尔跑偏。日子嘛,本来就没哪本说明书能替你列全所有标签。你只管敲。敲完瞅一眼渲染出来的效果。跑不通就改,卡住了就歇。最后蹦出来个啥德行,精致还是粗糙,丝滑还是卡顿,真没那么要紧。要紧的是你手没停。哪怕中间漏敲了几个空格,哪怕某些样式压根没生效,只要光标还在那儿一闪一闪的,这页面就还喘着气。当然,这话是跟同行、跟熬过夜的人唠的。要是新手期真这么干,项目早黄了。但熬到后来,你才会发现,能跑起来,就已经赢了一大半。