社区精选|耗时一年半才出第一版,这个工具会一统前端么?
今天小编为大家带来的是社区作者 卡颂 的文章,让我们今天来聊聊Rome。
前言
Rome
。vite
(法语中快的的意思)turbopack
(英语中涡轮增压器的意思),
Rome
团队用时一年半终于上线了第一个稳定版本Rome v10https://link.segmentfault.com/?enc=F6o2Np0lgjT5YSoiiweXyQ%3D%3D.00Ie92zQXB8cFnftUQv0fiz8hkLbdPQ3GkdYaVMZ6Xs8kmd%2F4AnYpgW8PQkuyQpL。Rome
和那些我们耳熟能详的工具(比如vite
、eslint
、CRA
)有啥区别?未来他会一统前端么?Rome 是什么
Rome
的创造者是前 Babel
团队的Sebastian McKenzie,后文就叫他小马吧。

问题 1:工具太多,学习成本高
对于项目中常用的一些工具,比如:
代码格式化工具:Prettier、dprint
lint 工具:ESLint、StyleLint
测试工具:Vitest、jest
编译器:babel、SWC
打包工具:webpack、vite、rollup
要熟练使用他们并不容易,因为:
需要了解不同工具如何配置
需要考虑如何将这些工具整合到项目中

create-react-app
)就是为了解决这个问题而生,但他们的缺陷也很明显。Rome
驱动的项目,只会有一个rome.json
配置文件以及开箱即用的最佳实践。问题 2:性能浪费
AST
的需要,但很多时候他们是各自为战的。babel
处理代码降级时会生成AST
,eslint
审查代码时也会生成AST
,这就造成了性能浪费。Rust
重写已然成为趋势。Rust
实现,并尽可能减少不必要的解析过程,就能显著提高工具性能。Rome
的基本思路就是如此。根据小马的计算,Rome
格式化代码的速度是Prettier
的 100 倍以上:
问题 3:提示对开发者不友好
当前很多前端工具是不同团队、不同个人开发的,所以在提示信息的准确性、体验上各不相同。
Rome
在提示信息上下了很多功夫,比如对于如下代码:function test(callback) {
try {
return callback();
} catch (e) {
console.log(e);
throw e;
}
return 20;
}
a.js
,执行如下检查命令:npx rome check a.js
return 20
永远不会执行:
要不是因为
return callback();

要不是因为
throw e;

eslint
的提示信息,Rome
的提示信息确实更友好。Rome
工具链的每一环,比如:打包代码的信息
lint 信息 测试信息
Rome 会一统前端么?
Rome
只提供了linter
(对标eslint
)、formatter
(对标prettier
)两个工具,可以通过如下命令体验:# 格式化
npx rome format <文件路径>
# lint
npx rome check <文件路径>
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
的潜在竞争者。Rome
的成熟体与其他竞品的竞争。而在当前,作为 linter
与 formatter
,Rome
的推广也是阻力重重。eslint
、 prettier
这样带着纯正开源血统的开源项目,Rome
宏大的愿景使得那些大用户体量的工具根本不会考虑接入 Rome
。Next.js
不原生支持 Vite
?当然,别人会说这都是技术上的考虑,与生意无关。
总结
Rome
的开发进度诚如他的名字一样 —— 罗马不是一天建成的。Rome
宏大的愿景并取得足够的市场份额并不容易。Rome
的前景如何呢?

关注公众号:拾黑(shiheibook)了解更多
赞助链接:
关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- 港币对人民币汇率2024年7月28日
- 韩元汇率对人民币2023年7月27日
- 科技巨头、行业独角兽、开源社区齐聚,这场属于 2D 市场人的年度盛会强势回归!
- 兆芯加入deepin kernel SIG小组!打造国产操作系统和CPU融合创新生态
- 中国移动16亿元物联网融合核心网新建设备集采:华为、中兴中标
- 如何精简家里的充电器
- 1-5月规上互联网企业完成业务收入5850亿元 同比增长1.8%
- 时隔几年资本再回这个赛道——抗疫也要抗抑
- 消费者抱怨闪缝?卡萨帝:已减小至0闪缝
- 活跃用户5.28亿的IPv6,如何跨越拐点走向“通车”?
- 聚焦人才培养,统信软件走进济南大学
- WIM2020成功举办,让科技更平等