当前位置: 首页 > Web前端 > HTML

第一版的出版用了一年半的时间,这个工具会统治前端吗?

时间:2023-03-29 11:55:31 HTML

大家好,我是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#lintnpxromecheck更详细命令参考官方文档如果Rome以后能达到他的目的,对前端开发者来说一定是一个有吸引力的选择。然而,实现如此庞大而全面的解决方案并非一蹴而就。在前端领域,新技术、新框架不断涌现。作为公司级开源产品,vercel开发的next.js选择了与Rome不同的方向(以前端框架为切入点),但两者的功能总有一天会重合。从发展路径来看,对于next.js:目前:next.js依赖webpack打包下一步:Vercel放入turbopack,next.js依赖turbopack打包下一步:Turbopack可能会使用Rust来最大化速度优势为Rome编写其他工具链工具:当前:专注于linter和formatter下一步:开发其他工具链工具当两个产品有相同功能的工具时,即使Rome开发体验更好(假设),它们也已经深度耦合在Next.js技术栈的开发者是不可能切换底层工具链工具的。不仅vercel,Vue团队、Remix团队等都是Rome的潜在竞争对手。上面说的就是罗马成熟体和未来其他竞品的竞争。目前,作为linter和formatter,Rome的推广也充满了阻力。与eslint、prettier等纯开源血统的开源项目相比,Rome的宏伟愿景让那些用户量大的工具根本不考虑接入Rome。类似的行为就像——为什么Next.js不原生支持Vite?当然,也有人会说,这些都是技术上的考虑,与业务无关。总结罗马的发展进程正如他的名字一样——非一日之寒。在前端领域发展迅猛、垄断潜力巨大的今天,实现罗马的宏伟愿景并获得足够的市场份额并非易事。您如何看待罗马的未来?