|
Web开发这行当,三年一小变,五年一大变。我入行时还在用jQuery写DOM操作,现在打开招聘网站,全是React、Vue、TypeScript的天下。变化快得让人喘不过气,但仔细想想,有些东西其实一直没变。 去年接了个外包项目,给一家传统制造业企业做官网。客户要求“现代感强一点”,我推荐用Vue3重构。对方技术负责人是个四十多岁的老程序员,他看了半天代码,皱着眉问我:“你们现在都不写HTML了吗?”我愣了下,反应过来他说的是模板字符串里那堆{ { }}语法。那一刻我突然意识到,我们这代前端已经习惯了“一切皆组件”的思维,但老一辈人眼里的Web,还是那个用记事本写HTML、用FTP传文件的年代。 这种割裂感其实一直存在。Web技术的迭代从来不是平滑的曲线,而是断崖式跳跃。从表格布局到DIV+CSS,从jQuery到三大框架,从HTTP/1.1到HTTP/2、HTTP/3,每次跳变都伴随着一批旧技术的消亡。我记得2016年那会儿,AngularJS还是主流,谁要是说“我们不用Angular”,面试官都会觉得你落伍。结果两年不到,React就把它按在地上摩擦,Vue也在旁边虎视眈眈。现在再看Angular,连官方文档都改版了好几次,当年那些熟练使用$scope的老哥们,估计都转行写Node了。 但真正让我觉得Web有意思的,不是这些框架之争,而是它底层那些朴素的原理。前阵子我优化一个移动端页面,加载速度从3秒降到1.2秒。怎么做到的?无非就是压缩图片、合并CSS、去掉几个阻塞渲染的JS脚本。这些技巧十年前就在用,现在依然有效。浏览器内核换了一茬又一茬,但HTTP请求的机制、DNS解析的过程、缓存策略的取舍,始终没变过。你说新技术没用吧,它确实让开发效率提升了不少;你说旧知识过时吧,关键时刻还得靠它们保命。 另一个让我感触深的点是Web的“包容性”。它不像iOS开发,必须用Swift,也不像Windows桌面程序,得守着.NET。Web这边,你可以用任何语言写后端,前端随便挑个框架,甚至直接用原生JS也行。这种自由是好事,但也带来了混乱。我见过一个项目,后端用Java,前端用React,中间层用Node做BFF,还引入了GraphQL。整个架构看起来高大上,可一旦出了问题,排查起来简直要命。有时候我在想,是不是我们太沉迷于技术选型了,反而忘了Web最初的样子——那就是一个能传递信息的超文本系统。 说到这儿,我得提一提Web标准的演进。HTML5刚出来那会儿,大家都在欢呼“终于不用装Flash了”。现在呢?WebAssembly又冒出来了,C++代码都能跑在浏览器里。以前我们觉得浏览器就是个文档查看器,现在它快变成操作系统了。但与此同时,那些老掉牙的兼容性问题依然存在。我上周还在处理IE11的兼容bug,你敢信?都2024年了,还有企业内部的OA系统必须用IE打开。这让我明白,Web的进化不是线性的,它一边在向前狂奔,一边还得拖着沉重的历史包袱。 说到个人感受,我觉得做Web开发最爽的时刻,不是用了什么新框架,也不是搞出了什么炫酷动画,而是当你把一个复杂的问题拆解成最简单的几个步骤,然后看着它在浏览器里流畅运行的时候。那种感觉,有点像老木匠看着自己打出来的榫卯结构——严丝合缝,恰到好处。当然,这种时刻不多,大部分时间都在跟bug较劲,跟需求方扯皮,跟版本兼容性做斗争。 说到底,Web这行没有银弹。别指望学了某个新框架就一劳永逸,也别觉得底层原理没用就懒得看。我见过太多人追着热点跑,今天学这个,明天学那个,结果哪个都不精。反倒是那些肯静下心来研究HTTP协议、浏览器渲染原理的人,遇到问题总能举一反三。Web的本质是连接,是信息的流动,理解了这一点,你就不会迷失在技术的汪洋里。 最后说句掏心窝子的话:Web开发的门槛越来越低,但天花板越来越高。低是因为工具越来越傻瓜化,高是因为真正理解系统运作的人越来越少。你要是真喜欢这行,别光盯着框架的更新日志,多去看看那些“不变”的东西。毕竟,浏览器会变,语言会变,但用户想要“快、稳、好用”这个需求,永远都不会变。 |