买技术书,十本有八本是为了给书架充数。这本《ASP.NET 2.0 Ajax应用程序设计》例外。它在书架夹层里硬蹲了快十年。封面黄得,啧,跟泡透了的老报纸没两样。上周改个老项目,好嘛,界面直接死锁。白屏一闪,表单里吭哧吭哧填的数据,全归零。那感觉,真叫人头皮发麻。十年前的焦虑,一下全涌上来了。没办法,只能伸手,把它从角落里硬薅出来。
翻到XMLHTTP请求和DOM对象那节,困意立马就上来了。老派.NET的代码示例,排版也土,一股子老实巴交的气。可目光落到“局部更新”四个字上,手停了一下。作者不整虚的。字面意思,干脆利落:整页别重载。哪儿卡了,就只换哪儿。剩下的部分,原封不动挂着。我盯着屏幕看了半天。道理是这么个道理。要是非往人生上靠,确实有点硬扭。但单论逻辑,没毛病。真挺实在。
人这毛病,就爱搞“整页刷新”。感情刚裂条缝,想着干脆一刀两断。工作要是碰见卡脖子的烂事,更恨不得连人带电脑砸了。好像不折腾个底朝天,问题就永远解决不了似的。书里的路子偏反着来。底子稳着,哪出bug补哪。系统照跑不误。我后来真试了。前阵子跟产品经理过方案,第七版又撞车。搁以前,我早拍大腿走人了。这次没动气。把分歧点单拎出来,拉了个二十分钟的短会死磕。大框架不动,光抠交互细节。结果呢?居然顺下来了。你看,技术书里教的,有时候压根不是语法。是教你摸清做事的节律。当然,话得说回来。这招不是万能药。底层要是真烂透了,局部刷新也没用。到时候,该重构,老老实实重构。
后面还扯到“异步”。浏览器等服务器回传数据,页面不卡。你照样滚鼠标,照样点按钮。右下角加载条慢吞吞转,主界面照样能用。看到这儿,我心里咯噔一下。以前总觉得,等结果就是干耗。没拿到答案,脚就挪不动步。可异步这玩意儿,脾气其实挺温和。不用停着死等。生活里好多事,本来就是后台悄悄跑。我现在学乖了。等审批,等面试通知,不再隔五分钟就刷新页面。焦虑没用。泡壶茶,翻两页书。让那些事儿自己在后台跑着。等一抬头,邮件往往就躺进收件箱了。等什么呢?根本不是空白期。只是换了个姿势在运行。
书当然不是没毛病。里面的类库,放现在看,早进博物馆了。光盘里附带的Demo界面,土得掉渣。后面讲继承和扩展的硬骨头,我直接跳页。早不碰这框架了,看也白看。但这不妨碍它留下点东西。工具这玩意儿,值不值钱,真不在新旧。在于它当年到底啃下过什么硬茬。它塞给我的,不是敲代码的招式。是一种“增量式”的耐性。不图一步登天。允许系统在跑着的时候,一点点调顺。
合上书,外头天都擦黑了。突然琢磨过味儿来。咱们老嚷嚷人生得不断重启,其实呢?多半只是某个小模块加载慢了。别慌。也别硬拽着全盘刷新。该更新的更新,该留的留着。剩下的,交给时间。让它慢慢异步返回。