OxLint 发布了,Eslint 何去何从?

2023-12-18 17:15

本文主要是介绍OxLint 发布了,Eslint 何去何从?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于最近的rust在前端领域的崛起,基于rust的前端生态链遭到rust底层重构,最近又爆出OxLint,是一款基于Rust的linter工具Oxlint在国外前端圈引起热烈讨论,很多大佬给出了高度评价;你或许不知道OxLint,相比ESLint大家都陌生,你可以认为他们是一样的功能。

OxLintOxc项目旗下的一款产品,Oxc作为一款Rust实现的前端工具链集合.

公布过的:

  • linter,即oxlint,对标Eslint
  • Parser,即oxc_parser,用于解析.js(x)和.ts(x),对标swc,基准测试据称比swc快2倍
  • Resolver,解析esm、cjs文件路径,对标webpack/enhanced-resolve,基准测试据称比webpack快28倍

未公布过的:

  • transpiler,对标babel,用于将高级语法转译为低级语法
  • minifier,代码压缩工具

还是值得期待Oxc的爆发的!

OxLint 现在正式发布了!可能有些同学不了解,简单介绍一下,它和 ESLint 一样,是一个 JavaScript 代码检查工具,只是它不需要任何复杂的配置,就能帮助我们捕捉错误或无用代码。它使用 Rust 编写,速度非常地快,和 ESLint 对比起来,大概快 50 ~ 100 倍。

尤大大也惊叹它的速度之快:

在这里插入图片描述

这个是对比
在这里插入图片描述

上面只是性能的比对优势, 但是 Oxlint与老牌Eslint还有很多区别

-易用性:

Eslint 提供了大量可选的规则,并且一些场景下对于不符合规则的代码可以自动修复。随着前端的迅速发展,相应优势逐渐变为劣势,在日常开发下,开发人员不再需要大量自定义规则,而是需要开箱即用的规则集的最佳实践。因此下诞生了很多新产品,比如:

  • 仅针对代码风格做出检查和格式化的Prettier
  • 各大厂商定制版规则集eslint-plugin-airbnb, eslint-plugin-Standard …

Oxlint:吸取了上述产品的优点,默认提供了一套开箱即用的规则集。这套规则集主要关注代码的正确性(比如语法错误、冗余代码、容易造成误解的语法)而不是代码的细节优化(比如语法的性能、风格),它的分类模式参考了 clippy 的规则。熟悉rust 、就会觉得这样的的分类是如此的方便,好用!,不熟悉的觉得很难用!隐忍而已把!前端不断向前学习!运行默认模式(不加任何参数,直接 npx oxlint)识别出来的错误,一般都是需要修正的错误!

#npm
$ npx oxlint@latest / npm add -D oxlint
#pnpm
$ pnpm dlx oxlint@latest / pnpm add -D oxlint
#yarn 
$ yarn dlx oxlint@latest / yarn add -D oxlint
#bun
$ bunx oxlint@latest / bun add -D oxlint
#deno
$ deno run oxlint@latest
  • 诊断可读性

Eslint诊断出问题后, 只告诉你为什么报错!剩下的交给开发者自身去排查!简单的规则报错很好排查,但如果是更复杂的规则,简短的信息可能并不能直观表达具体哪里报错以及解决办法,很多时候我们还需要查下规则文档,看看这条规则的具体含义,再结合报错的代码分析。
Oxlint诊断出问题后更加详细和智能,它会告诉你为什么报错、具体哪里报错、怎么解决,这就是基于rust的优势,给出的信息更加详细,用过rust,编译的时候,也会又这样信息。

  • 参与成本:是指开发者自定义规则的成本

Eslint的规则都是JS编写的,前端都是会写js,相对学习成本基本为0 只要会js就行,而js本身就是前端的技能之一!
Oxlintrust编写的,如果开发者自定义规则也得写rust,那成本就太高了!而为了尝试解决这个问题,Oxlint从2个角度出发来做

  1. 你别自己写了,官方将常用的规则都写好了,比如 jest: no-confusing-set-timeoutreact: jsx-no-duplicate-propseslint: default-case-lasttypescript: no-unnecessary-type-constraint
  2. 实现一套专门编写规则的DSL,正在研究开发一套DSL,专门用来编写规则。至于这套DSL何时问世、好不好用暂不得知,毕竟未来谁有知道呢?

后记

最近的rust在前端领域的崛起,各大产商底层都在rust重构,来提高性能和赋能,可见Oxlint也将会又新的曙光,只是个人见解,未来谁也不知道,也可能从昙花一现,也可能火山爆发!感谢大家阅读到这,希望大家可以使用 OxLint 获得更愉悦的开发体验,也预祝大家即将到来的元旦假期快乐!想要开始使用体验,请查阅安装指南,或者了解更多关于oxc项目的信息。

这篇关于OxLint 发布了,Eslint 何去何从?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/509186

相关文章

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

C++编程:ZeroMQ进程间(订阅-发布)通信配置优化

文章目录 0. 概述1. 发布者同步发送(pub)与订阅者异步接收(sub)示例代码可能的副作用: 2. 适度增加缓存和队列示例代码副作用: 3. 动态的IPC通道管理示例代码副作用: 4. 接收消息的超时设置示例代码副作用: 5. 增加I/O线程数量示例代码副作用: 6. 异步消息发送(使用`dontwait`标志)示例代码副作用: 7. 其他可以考虑的优化项7.1 立即发送(ZMQ_IM

风格控制水平创新高!南理工InstantX小红书发布CSGO:简单高效的端到端风格迁移框架

论文链接:https://arxiv.org/pdf/2408.16766 项目链接:https://csgo-gen.github.io/ 亮点直击 构建了一个专门用于风格迁移的数据集设计了一个简单但有效的端到端训练的风格迁移框架CSGO框架,以验证这个大规模数据集在风格迁移中的有益效果。引入了内容对齐评分(Content Alignment Score,简称CAS)来评估风格迁移

Eclipse发布Maven项目到tomcat,无法加载到lib文件夹下的jar包

BMS 解决方法: 当我们发布web项目到tomcat时,访问地址时会报一个classnotfound的错误,但是eclipse中的项目中都已经添加了相应的类,有一种比较容易犯的错误是,你没有把额外所需的jar包加到tomcat中的lib文件夹中,在这里介绍一种在项目中直接添加jar包到lib目录下:  右键已创建的web项目——properties属性——点击Deployment Assem

1-3 微信小程序协同工作和发布

协同工作和发布 🥟🥞以权限管理需求为例 一个项目组,一般有不同的岗位,不同角色的员工同时参与项目成员 流程 成员管理的两个方面 不同项目成员对应的权限 版本

前端工程化2:从0-1的eslint插件开发教程

从0-1的eslint插件开发教程 开发eslint插件目的:根据项目需要,自定义满足项目特殊需要的校验规则是 参考eslint官方文档展开阐述 插件开发 自定义规则 单元测试 下面开始通过一个示例demo来介绍插件整个开发流程 代码中出现的方法及变量的详细解释与相关文档,会在文末给大家列举出来,大家可以先把代码拷贝到自己的demo中然后结合本文第3部分的变量|方法解释去理解代码 开发一

发布和查看探店笔记:

我的博客大纲 我的后端学习大纲 1.1.发布探店笔记: 此功能未用到redis a.数据库表: 1.探店相关表: b.探店有关接口: 1.图片上传和发布是调用了两个接口: 注意:修改图片上传的地址,建议直接放到你的Ngixn下的imgs目录 1.2.查看探店笔记: 此功能未用到redis a.需求说明: 1.点击探店首页的笔记,