你没看错,Github前端团队用了半年多的时间,成功将项目依赖包大小减少了30kb。缺少的部分是什么?查询。技术或技术债务多年来,Github已经成长为一家拥有数百名工程师的公司。作为一个大公司,有些人被抽出来做性能优化。可是,狼多肉少,怎么会有那么多优化点呢?很难找到新的性能优势,但要找到旧代码的麻烦并不容易?因此,团队专注于“技术债务”。鲁迅曾经说过,如果前人使用的技术阻止了后人重新发明轮子,那就成了技术债。那么,您应该选择还清哪些债务呢?jQuery是完美的选择。原因如下:广泛的依赖,这个改动的工作量肯定是增加了。jQuery代表了老一代的Web开发方法。换成潮流的,这个对比就很明显了!jQuery30kb,虽然飞的小,但是一搞就搞定,我们先评估一下工作量。Workloadmaxmaxmax新人这时候嘀咕道:“这个工作量,我保守估计,逐步替换,一周开发,一周测试,两周上线?”组长一拍桌子:“那肯定是996小作坊干的!我们是专业做事的大公司,这个东西得‘稳步迭代,增量解耦’。第一选择:我们得建立指标跟踪,统计每行代码调用jQuery的次数。实时监控,确保指标稳步下降。调用次数统计。其次,要有专人开发一个lint(见eslint-plugin-jquery),全队普及,以免大家继续用jQuery的方式。有新人问:“所以有人加了eslint-disable绕过规则怎么办?”组长微微一笑,“年轻人,你走对了路。“我们要开发一个Github机器人,每当有人提交包含eslint-disable规则的新代码时,机器人就会通知团队成员,以便我们尽快介入审查代码。最后,jQuery是一个模块化的库.为了保证“稳定移除”,我们需要维护一个自定义的jQuery版本,每当确定一个模块不再被使用时,将其从自定义版本中移除,并提供一个更小的版本。例如:当$.ajax完全换成了fetch,AJAX模块就可以去掉了。”经过这次操作,我没有半年的工作量了。我觉得不行。”领队靠在椅背上,微微摇头,说道。你认为这是升华主题的结束吗?天真~之前的所作所为只能说是在稳步推进工作。接下来要说的就是重中之重的KPI。去掉了jQuery,项目中难免会出现大量的原生JS。太多重复的代码意味着抽象和封装,对吧?“你是在谈论框架!Vue还是Angular?”新人很快回答。“小了!版面小了!”领队叹了口气。“当然是拥抱标准了,Vue的模板语法也是按照WebComponents标准演进的。”“我们要领先!领先!时代!”从现在开始,所有可重用的功能组件都被封装为WebComponents。比如“复制粘贴”功能应该封装成clipboard-copy:
