大家好,我是Kason。前端领域从不缺少热点,新工具基本上每六个月就会出现一次。在如此快节奏的浪潮中,有一个工具显得格格不入,他就是罗马。从名字上我们就能窥得一斑,看看其他工具:vite(法语意思是快)turbopack(英语意思是涡轮增压器),再看看他——言下之意罗马不是一天建成的。事实也是如此,时隔一年半,Rome团队终于推出了第一个稳定版Romev10。作为前端工具链工具,Rome和那些大家耳熟能详的工具(比如vite、eslint、CRA)有什么区别?未来他会称霸前端吗?今天就来聊聊这个话题。欢迎加入人类优质前端框架群。什么是罗马?5月21日,小马在两位风险投资人的450万投资后成立了RomeTools。公司的目标是实现一站式前端工程解决方案,以替代现有的各种前端工具。在小马看来,目前的前端工程解决方案存在很多问题,例如:问题一:工具太多,学习成本高针对项目中常用的一些工具,例如:代码格式化工具:Prettier、dprintlint工具:ESLint,StyleLint测试工具:Vitest,jest编译器:babel,SWC打包工具:webpack,vite,rollup熟练使用它们并不容易,因为:你需要了解不同的工具是如何配置的,你需要考虑如何将这些工具集成到项目中最后,项目往往充满了各种配置文件。以至于在复杂的项目中通常会有一个特殊的职位——webpack配置工程师。很多脚手架工具(比如create-react-app)就是为了解决这个问题而诞生的,但是它们的缺陷也很明显。它们只是提供了一个粘合层来隔离这些工具的复杂性,但是如果有个性化的需求,开发者还是要面对这些问题。而对于Rome支持的项目,将只有一个rome.json配置文件,其中包含开箱即用的最佳实践。问题二:性能浪费前端工具链中很多工具都需要访问AST,但很多时候都是自己打架。比如babel在处理代码降级时会生成AST,eslint在review代码时也会生成AST,造成性能浪费。另一方面,用Rust重写前端工具已经成为一种趋势。如果这些工具可以用Rust实现,并尽可能减少不必要的解析过程,则可以显着提高工具性能。这是罗马的基本思想。据小马测算,Rome格式化代码的速度是Prettier的100多倍:问题三:Tips对开发者不友好目前很多前端工具都是由不同的团队和个人开发的,所以准确率和体验提示信息各不相同。Rome在提示信息上下了很大的功夫,例如下面的代码:functiontest(callback){try{returncallback();}catch(e){console.log(e);扔e;}return20;}保存为a.js,执行如下检查命令:npxromechecka.js控制台会输出三段内容。第一段告诉你return20永远不会被执行:最后两段会告诉你为什么它不会被执行:要么是因为returncallback();或者因为抛出e;相比于eslint的提示信息,Rome的提示信息确实更加友好。以后这样友好的提示信息会出现在Rome工具链的每一个环节,比如:打包后的代码信息、lint信息、测试信息、Rome会不会统一前端?目前Rome只提供了两个工具:linter(用于基准测试的eslint)和formatter(用于基准测试的prettier),可以通过以下命令体验:#formatnpxromeformat
