SwitchyAgain 开发杂谈(四)大修
已经是五月的末尾了。在尝试可以做到 MV3 兼容后,我的心中又燃起了希望。看起来我是开始能学会如何通过 AI 来辅助完成编程了。之前更多还是在研究通过 AI 来生成图片,而没有专注在编程方面。
确定了这样的一个思路后,那么就可以慢慢来修了,先让 AI 分析出一个大致的路线,接着再逐渐细分成可以单独提交的修改,并且每次都要人工简单检查下。这样虽然整体上会比较慢,但至少够稳,不会出现太大的失误。
于是先从最简单的开始,CoffeeScript 只是一个原生 JavaScript 的语法的变种,它本身就可以自由在二者之间做转换。只是由于历史原因,它转换回原生 JS 后,可能和现代的 JS 会有很大的差异,甚至性能上也会体现出惊人的差距。
但是还是不能操之过急,哪怕 CS 本身可以全都直接转换到原生 JS,还是要分块做,每做完一块就人工验证。尤其涉及到很重要的功能,更要谨慎小心。这样就可以先完成从 CS 转换回原生 JS。
接着就是原生 JS 转换到 TypeScript。这一步并不好做。首先是原生 JS 的语法问题,可能有需要改善的地方,也可能因为过时而不需要了,如果都转换成 TS 并不合适。那么就是,能确定可以转换的先转换到 TS,把握并不大的仍然继续保留,以后再视情况而定来修改。这样下来,项目就变成了 JS + TS 混合存在的临时状态。
还有项目也有一些过时的组件依赖的问题。只能先升级到最后的版本,再看情况能不能移除掉。有些依赖主要还是当时的 JS 生态并不完善而出现的对原生 JS 的补充,但随着原生 JS 的不断丰富,到现在已经不必再依赖了。那么这些依赖就可以完全通过原生 JS 来替代,甚至能够移除。
一些过时的功能也能够删除掉,但由于整个项目并没有那么理想地一种可以随便就剥离出来的状态,只能先记录下来。很简单的没有那么多依赖的就可以先删除了。比如说 FTP 协议的代理功能,这个已经没有任何使用的价值和意义了,必须删除。
至于 Angular 框架,已经确定要迁移到 React 框架。这个过程也是及其艰难。因为需要把 React 框架接入进来,那么就是一部分一部分地去接入,去测试,从这种一半 React 一半 Angular 的状态,慢慢到最后的完整的 React 框架。现在回想起来,就2个词,痛苦,完美。
看着这么多的提交记录,还有版本记录,历时半个月,总算是做成了一个比较满意的现代化改造。其间还有好多数不尽的坑,都已经不再愿意去回想起来。如果不是有 AI 能够辅助分析,这真的是一件太容易让人半途而废、甚至根本就不想开始的事情。
有那么几个坑,我印象深刻的就是我让 AI 去分析、去修改,结果 AI 跑了特别久,好几个小时,也不见有结束的迹象。主要是 JS 迁移到 TS,有那么几个模块是很有难度的。于是就只能让 AI 停下,先只对现在的修改做个简单的收尾。毕竟需要做的事情实在太多,只能先优先完成简单的。所幸,最后其实还是把这些坑都基本解决了。
做了这么一件事情,更多地其实还是为了自己。自己本来就很常用这个扩展程序,进而才会有这样的一个足够的动力去推动自己去完成。中途肯定也是有累到不想再碰的时候。遇到了坑就叫 AI 分析,但 AI 分析完了我还是看不懂,AI 给的方案我也不理解,偏离了我的实际需求那又要纠正回来。
尤其是 BootStrap,诚然这个版本已经不维护了。但我其实只是有这个样式设计就好了,也就是只需要 CSS,这个是否继续维护的关系没有很大。可是 AI 就非要建议使用最新版,好多次都提到这个,每次都要去解释保留这个版本的目的。那我升级上去后,界面肯定就变了,而且现在 BS 的最新版我是觉得太难看了,感觉都没什么人在用,一股塑料审美的味道。也没有更好的替代,这个操作界面实在太熟悉,也足够漂亮,保留也不会有致命问题或隐患,于是就这样看起来好像什么都没有变一样,其实已经大改造了。
其他诸如 Grunt Bluebird UglifyJS 等等,属于是我看到就头疼、提都不想提,我就根本在此之前几乎没碰过这些。AI 给我分析完,我就只能打问号,这真的可以迁移完吗?我都不愿意去回忆自己怎么去完成这些事情了。虽然是有 AI 辅助,但最后还是要靠自己来决定方向的,全靠 AI 做出来的东西并没有什么灵魂。而自己参与进去,参与地越多,对大脑的伤害就越大。虽然的确有助大脑飞快去思考问题,但思考多了也累。
最后就是做出了这么一个我自认为很完美的扩展程序。不敢说了如指掌,但的确有想修改的、想增加的,都会有思路,不会束手无策。这里还需要考虑一件事情,那就是现在的确已经是一个 AI 编程的新时代,所有的操作,都需要考虑到对 AI 来说是否可以很快就能够理解并且快速满足开发需求。这样的话,就算是先把苦都给吃了,后来就全是甜的了。我相信这个扩展程序会一直陪伴着我,很难说会到什么时候,但我肯定是离不开它了。
(完)