最近,在 AI 得帮忙下,完成了一个在线Excel项目的调研和技术开发。这个项目的主要目标是做一个可导入导出的在线 Excel 表格编辑器,作为后台管理系统功能的补充。
在这篇文章里,给大家分享整个开发过程,包括技术选择、实际操作以及AI在整个过程中怎么帮上忙的。
技术调研
在项目刚开始的时候,问了前同事,金山/微软的收费,需要私有化部署的话,动则几十万的。这都不是我等小公司能承受的。无奈还是转向了自研,使用开源项目做修改。
虽然只是个后台管理系统的补充,需求比较简单,但基本功能都要满足才行,至少要把Excel的样式还原,编辑完还得能保存和导出成Excel文件。
多次用 AI 做了技术调研,最后筛选出了 Handsontable 和 Luckysheet 这两个开源库。
Handsontable
Handsontable 的界面简洁明了,支持各种表格操作,比如选中单元格、添加行或列以及数据验证等等。
它还提供了丰富的 API 和插件系统,让开发者可以根据需要进行个性化开发,方便处理和分析数据。
而且,它的浏览器兼容性好,屏幕自适应性也强,给用户带来流畅的操作体验。
不过,Handsontable 的学习曲线有点陡峭,在定制化方面对于一些非常特定的需求来说,可能需要花费不少的时间和精力来自行开发或调整现有组件以满足需求。即使是整合到流行的前端框架(如 React 和 Vue.js)也需要额外的工作来确保无缝集成。
Luckysheet
Luckysheet 是一个开源的在线 Excel 库,使用体验总体来说是非常不错的,它提供的操作界面最接近 Excel 的界面。而且支持多种数据类型。能很好地还原 Excel 表格的样式和数据。封装的功能较为完善,极大地提高了工作效率。
但它仍然存在一些不足之处。例如,在处理大规模数据时,软件的响应速度可能会有所减慢。此外,虽然它提供了丰富的功能集合,但在某些特定领域的支持上可能不如专门针对这些领域的专业工具那样全面。
AI在技术调研中的作用
在这一过程中,AI 通过细致地分析各个库的文档、收集社区反馈以及评估性能测试结果等多方面的信息,帮助我迅速而准确地比较了不同技术方案的优势与不足之处。
疫情后,经济不景气,现在的开源库,或调整了开源协议,或仅对部分功能开源。(在这个项目中,HandsonTable 7.x 版本更新了协议,Luckysheet 3.x 版本重构并重命名了,不再完全开源)。
还好,AI 能快速地阅读协议及对比各版本的差异,为技术选型提供了强有力的支持,大大提升了技术选型的效率和质量。
这个过程还多少有一些繁琐,而且还是要反复验证是否真的如 AI 所说的内容,好在现在的 AI 都会提交其阅读的信息源。
开发实践
从写 demo 到完善项目
虽然 HandsonTable 的 API 读起来真的爽,然而用其开发功能的时候,才发现要写大量的代码。
而 LuckySheet 的封装就做得比较好了,基本上属于拿来就能用的程度。但是其 API 的不清晰,甚至出现了与源码不对应的情况,令开发过程中,却屡屡受挫。
确定下来使用 LuckySheet 之后,再用 AI 逐步完善其开发流程,优化打包工具、修复 bug 等等。
AI在开发中的作用
在没有 cursor 之前,使用 AI 对话工具来做 demo,虽然比自己快不少,但是还是要花费很多时间修改代码、调试代码。因为 AI 出来的代码 多少有一些问题。
后面使用了 Cursor,才有了质的飞跃,直接告诉他要写个 demo,刷刷几下就完成了。出问题了,也是直接提问,让他自行修复。
让其写 HandsonTable 的时候,就发现需要写很多的代码去实现功能,才把其放弃了。写 LuckySheet 的时候,也是发现了不少它的 bug,甚至指出了底层的代码的错误,做了修改。
用 cursor 将 LuckySheet 这种老旧项目做打包升级,也是几分钟的事情。
总结
AI 工具让小作坊也有了大作为。调研、开发的时间都大大缩短了。
调研的时候,阅读英文的时间、写例子测试的时间都会飞快的溜走。但是在 AI 的帮助下,都是几分钟就能完成。虽然AI 时不时有幻觉,需要二次确认,不过整体时间还是远远缩小了,个人感觉能节省 30% 的时间。
写 demo 的时候,也许使用了新一代的工具,自动化程度高了不少。个人感觉能节省掉 60% 的时间。
最近常常看到 1 人公司这个词,感觉已经不远了。