jQuery死了吗?脚本每次技术讨论提到它,总有人急着给它开追悼会。脚本可现实是脚本,无数老项目还在跑着它,脚本新项目里也偶尔能瞥见它的脚本影子。
我上个月帮朋友改一个2016年的脚本电商后台,打开代码,脚本满屏的脚本$("#xxx").on('click')。那哥们儿跟我说想重构成Vue,脚本我看了看需求,脚本就改几个按钮和弹窗。脚本我劝他别折腾,脚本jQuery三行能搞定的脚本事,上框架得写组件、脚本配状态,脚本还得考虑构建流程——纯粹给自己找罪受。
说句实在话,jQuery最狠的地方不是它提供了什么API,而是它把浏览器差异那堆烂事全吞了。IE8时代你写个getElementById都得担心兼容性,但$()一出手,管你什么破浏览器,照样跑得欢。这种“一把梭”的爽快感,现在的前端框架反而给不了——React要管状态,Vue要学指令,Angular那套依赖注入能把新手绕晕。
但你要是问我新项目还用不用它?我大概率摇头。倒不是因为它技术落后,而是生态真的凉了。你搜个jQuery插件,十年前的老古董还在用$.ajax那套写法,跟现在fetch和async/await比起来,像拿算盘跟计算器比速度。而且现在浏览器原生API早就支棱起来了,querySelector、classList、fetch,哪个不比当年强?jQuery当年解决的问题,浏览器厂商自己动手解决了大半。
不过有意思的是,jQuery的思维模式反而活下来了。你看现在各种框架的$refs,还有CSS选择器直接操作DOM的思路,哪样不是从jQuery那儿继承的?它像那个教会你骑自行车的辅助轮——等你真会骑了,辅助轮拆了,但平衡感已经长在你身体里了。
我印象最深的是去年写个活动页,需求方要求兼容IE11。团队里新来的小伙子张嘴就是“这年头谁还管IE”,结果我默默在代码里写了句if (window.jQuery) { ... }。那页面最后用了20行jQuery就搞定了所有兼容问题,换成原生JS写,光事件绑定就得写三种分支。那一刻我突然觉得,这老伙计就像家里那把用了二十年的菜刀——刀柄都包浆了,但切肉就是比那些花里胡哨的陶瓷刀顺手。
所以别老问“jQuery死没死”这种二极管的题。它更像是个退休的老教师,偶尔被请回去代代课。你要是正经搞前端开发,该学框架学框架,该上工程化上工程化。但哪天遇到那种“三天上线、浏览器乱七八糟、预算就五千块”的破活儿,别犹豫,直接npm install jquery——它可能不是最优解,但绝对是最省心的解。