
上周五下午,北京某互联网公司的技术分享厅里坐满了人。这场分享会原本只是内部的技术交流,但因为消息走漏,不少外公司的程序员也慕名而来——大家都听说,Dom大佬要现场“露一手”。
Dom大佬是谁?圈内人称“代码炼金术师”,专治各种疑难杂症,据说他写的代码比别人的注释还简洁。但这次,他上台后只说了三句话:“我今天不讲课,只写一段代码。很短。你们看完别骂我。”
全场哄笑。
一段代码,让会议室安静了五秒
Dom大佬打开了一个空的HTML文件,没有用任何框架,没有引入任何库,甚至没有用CSS预处理器。他一边敲一边说:“这是一个很常见的需求——页面里有一个按钮,点击后显示当前时间,并且每秒钟自动更新。”
听起来再普通不过了对吧?在场的前端工程师们心里已经开始默写自己惯用的写法:有人会用setInterval配合Date对象,有人会封装一个自定义Hook,还有人可能会引入Moment.js或day.js这类工具库。
然而Dom大佬只写了七行代码。准确地说,是七行纯JavaScript,没有一行HTML结构,没有一行CSS样式。他用了document.write这个几乎被现代开发者遗忘的API,结合setInterval和一个自执行的匿名函数,在页面加载的瞬间直接向文档流输出了一个完整的、自带样式的时钟组件。
当他在浏览器里按下刷新键的那一刻,屏幕上一个实时跳动的数字时钟出现了。字体优雅、居中显示、背景还有渐变色——而这一切,全部是在那七行代码里内联完成的。
会议室里安静了整整五秒。没有人说话。
为什么大家都沉默了?
第一个反应过来的是坐在第三排的一位资深全栈工程师。他小声嘀咕了一句:“这玩意儿……居然还能这么写?”这句话像是打开了闸门,周围开始有人窃窃私语。
有人掏出手机拍照,有人立刻打开自己的编辑器想要复现,还有人在小声争论:“这算不算黑魔法?”更多人则是沉默着,反复盯着那几行代码看,试图理解其中的逻辑。
其实真正让程序员们震惊的,不是Dom大佬写出了什么惊天动地的算法,而是他用一种“最原始、最不被推荐”的方式,解决了一个非常现代的交互需求。document.write这个API,几乎所有前端教程都会告诉你“不要用”,因为它会阻塞文档解析、会覆盖页面内容、是“过时的坏味道”。但Dom大佬恰恰利用了它的特性——在页面加载的瞬间完成全部渲染,后续交给setInterval去更新,既没有性能问题,也没有DOM操作的复杂开销。
这就像所有人都习惯了用电梯上楼,突然有个人当着你的面徒手爬上了三十层,而且还比你快。
这段代码的底层逻辑拆解
事后,Dom大佬在内部文档里详细解释了这段代码的设计思路。他说,很多时候我们被框架和最佳实践“驯化”了,以至于忘记了底层API本身的能力边界。document.write确实有很多坑,但在特定场景——比如快速原型、演示、或者对性能要求极低的工具页面——它反而是最简洁、最直接的方案。
他还提到了一个关键点:不要为了炫技而炫技。他选择这个写法,不是因为想证明自己多厉害,而是因为他要演示的核心是“实时数据更新的最小成本实现”。去掉所有框架依赖、去掉构建工具、去掉模块化封装,最后剩下的那几行代码,才是问题的本质。
这件事给我们的
分享会结束后,这件事迅速在几个程序员社群里传开了。有人感慨“大佬就是大佬,用最土的API写最骚的代码”,也有人反思“我们是不是过度工程化了?”
其实这两者都对。Dom大佬的演示并不是鼓励大家回去把项目里的React都换成document.write,而是提醒我们:在技术选型和日常编码中,保持对底层原理的敬畏和理解,比盲目追随流行趋势更重要。当你真正理解一个API为什么“不好用”的时候,你才具备了判断它什么时候“恰好有用”的能力。
那天的分享会结束时,Dom大佬最后说了一句话:“代码没有过时,只有用错地方。如果你觉得某个API是废物,那说明你还没遇到适合它的场景。”
全场再次沉默。但这次,沉默里带着思考。
Dom大佬演示的那段代码到底写了什么,为什么能让全场程序员都沉默?
他写了一个点击按钮实时显示并每秒自动更新时间的功能,但只用了七行纯JavaScript代码,没有写任何HTML结构和CSS样式。他用了大家平时都不敢碰的document.write这个API,结合setInterval和一个自执行的匿名函数,在页面加载瞬间直接输出了一个完整带样式的时钟组件。当浏览器刷新后,一个带渐变背景、居中显示的实时数字时钟就出现在屏幕上,这种极简又反常规的实现方式让所有人都愣住了。
document.write不是早就被淘汰了吗,为什么Dom大佬还要用它?
他事后解释说,很多人被框架和最佳实践驯化了,忘记了底层API本身的能力边界。document.write确实有很多坑,但在特定场景比如快速原型、演示或者对性能要求极低的工具页面,它反而是最简洁直接的方案。他选这个写法不是为了炫技,而是想演示实时数据更新的最小成本实现,去掉所有框架依赖和构建工具后,那几行代码才是问题的本质。
这段代码有没有什么实际应用场景,还是纯属炫技?
他明确表示不要为了炫技而炫技,这个案例的核心是提醒开发者保持对底层原理的理解。在实际工作中,如果你遇到一个需要快速验证的小工具页面,或者做一个内部演示用的原型,这种写法比引入一个完整框架要高效得多。他特别强调,当你真正理解一个API为什么不好用的时候,你才具备了判断它什么时候恰好有用的能力。
看完这个演示,普通程序员能从中学到什么?
最大的 是不要盲目追随流行趋势,也不要轻易给任何技术打上过时的标签。那天的分享会最后他说的那句话很有代表性:代码没有过时,只有用错地方。如果你觉得某个API是废物,那说明你还没遇到适合它的场景。很多程序员回去后反思自己是不是在项目中过度工程化了,比如一个简单的展示页面也非要上React或Vue。
