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项目的信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/218211.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式——建造者模式(创建型)

引言 生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。 问题 假设有这样一个复杂对象, 在对其进行构造时需要对诸多成员变量和嵌套对象进行繁复的初始化工作。 这些初始化代码…

《人工智能导论》知识思维导图梳理【第7章节】

文章目录 说明专家系统机器学习机器学习定义工作流程模型评估机器学习分类在这里插入图片描述 机器学习部分md内容机器学习1 机器学习定义机器学习是从数据中自动分析获得模型,并利用模型对未知数据进行预测机器学习(machine learning)使计算…

【Python】Flask + MQTT 实现消息订阅发布

目录 Flask MQTT 实现消息订阅发布准备开始1.创建Flask项目2创建py文件:mqtt_demo.py3.代码实现4.项目运行 测试1、测试消息接收2、 测试消息发布 扩展 Flask MQTT 实现消息订阅发布 准备 本次项目主要使用到的库:flask_mqtt pip install flask_mqt…

uniGUI for Delphi UniSweetAlert控件详解

UniSweetAlert是UniGUI后期版本新增的一个界面友好的消息提示和输入控件,是ShowMessageN的升级版,UniSweetAlert增加了更多的可控制属性。 属性介绍 1、AlertType:提示类型,分为atError、atSuccess、atInfo、atQuestion、atWarni…

计算机网络快速刷题

自用//奈奎斯特定理和香农定理计算题 参考博客:UDP协议是什么?作用是什么? 肝了,整理了8张图详解ARP原理 【网络协议详解】——FTP系统协议(学习笔记) 在OSI参考模型中&am…

RS®SMM100A 矢量信号发生器具备毫米波测试功能的中档矢量信号发生器

R&SSMM100A 矢量信号发生器 具备毫米波测试功能的中档矢量信号发生器 R&SSMM100A 矢量信号发生器在 100 kHz 至 44 GHz 的频率范围内提供优越的射频特性。这款仪器覆盖现有无线标准所使用的 6 GHz 以下的频段、新定义的最高 7.125 GHz 的 5G NR FR1 和 Wi-Fi 6E 频段以…

Nginx(四层+七层代理)+Tomcat实现负载均衡、动静分离

一、Tomcat多实例部署 具体步骤请看我之前的博客 写文章-CSDN创作中心https://mp.csdn.net/mp_blog/creation/editor/134956765?spm1001.2014.3001.9457 1.1 访问测试多实例的部署 1.2 分别在三个tomcat服务上部署jsp的动态页面 mkdir /usr/local/tomcat/webapps/test vim …

stable-diffusion-webui(AI绘画)项目实现,即遇到的问题

实现步骤: 为了使环境中的库版本不会乱,导致自己电脑原来一些项目无法运行最好使用虚拟环境 下载miniconda 在搜索中搜所miniconda找到 建立虚拟环境 conda create --name sdwebui python3.10.6 每次运行激活这个虚拟环境 conda activate sdwebui …

生产环境_Spark处理轨迹中跨越本初子午线的经度列

使用spark处理数据集,解决gis轨迹点在地图上跨本初子午线的问题,这个问题很复杂,先补充一版我写的 import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.sql.{Row, SparkSession} import org.apache.spark.sql.func…

抖音视频解析,无水印解析下载抖音视频

抖音视频解析,你是否经常遇到这样的情况,看到一些非常精彩的抖音视频,想要保存下来,但因为下载速度慢或者视频带有水印而感到困扰?那么,这款(抖音无水印解析工具)将是你的得力助手&a…

JMeter集结点的使用场景以及如何使用?

JMeter是一个开源的负载测试工具,它被广泛用于测试应用程序、Web服务和网络协议等的性能。在JMeter中,集结点(JMeter Cluster)是一种分布式测试环境,它允许多个JMeter实例同时工作来模拟高并发负载。 使用集结点的场景…

SaaS 电商设计 (五) 私有化部署-实现 binlog 中间件适配

一、 背景 具体的中间件私有化背景在上文 SaaS 电商设计 (二) 私有化部署-缓存中间件适配 已有做相关介绍.这里具体讨论的场景是通过解析mysql binlog 来实现mysql到其他数据源的同步.具体比如:在电商的解决方案业务流中经常有 ES 的使用场景,用以解决一些复杂的查询和搜索商品…

【答案】2023年国赛信息安全管理与评估第三阶段夺旗挑战CTF(网络安全渗透)

【答案】2023年国赛信息安全管理与评估第三阶段夺旗挑战CTF(网络安全渗透) 全国职业院校技能大赛高职组信息安全管理与评估 (赛项) 评分标准 第三阶段 夺旗挑战CTF(网络安全渗透) *竞赛项目赛题* 本文…

【贝叶斯分析】计算机科学专业博士作业二

1 第一题 1.1 题目 已知变量A和B的取值只能为0或1,A⫫𝑩,且𝑝(𝐴1)0.65,𝑝(𝐵1)0.77。C的取值与A和B有关,具体关系如下图所表: ABP(C1|A,B)000.1010.99100…

正则表达式:简化模式匹配的利器

正则表达式:简化模式匹配的利器 一、正则表达式简介1.1 正则表达式介绍1.2 正则表达式使用场景 二、正则表达式语法2.1 正则表达式元字符和特性2.2 正则表达式常用匹配 三、正则表达式实战3.1 常见的正则表达式用法3.2 正则表达式的过滤用法3.3 正则表达式的代码用法…

Fiddler中AutoResponder的简单使用

AutoResponder,自动回复器,用于将 HTTP 请求重定向为指定的返回类型。 这个功能有点像是一个代理转发器,可以将某一请求的响应结果替换成指定的资源,可以是某个页面也可以是某个本地文件 1.使用 打开“Fiddler”,点击…

11.jvm第三方工具使用实践

目录 概述GCEasy官网jvm内存占用情况关键性能指标堆内存与元空间优化 MAT安装MAT相关概念说明内存泄漏与内存溢出shallow heap及retained heapoutgoing references与incoming referencesDominator Tree GCViewerArthas下载安装与启动jdk8jdk 11jdk11自定义boot jarjdk17 常用命…

聊聊Java中的常用类String

String、StringBuffer、StringBuilder 的区别 从可变性分析 String不可变。StringBuffer、StringBuilder都继承自AbstractStringBuilder ,两者的底层的数组value并没有使用private和final修饰,所以是可变的。 AbstractStringBuilder 源码如下所示 ab…

fckeditor编辑器在Chrome浏览器下编辑时多出空格解决方法

查看专栏目录 Network 灰鸽宝典专栏主要关注服务器的配置,前后端开发环境的配置,编辑器的配置,网络服务的配置,网络命令的应用与配置,windows常见问题的解决等。 文章目录 结尾语网络的梦想 dedecms网站后台采用fckedi…

「构」向云端 - 我与 2023 亚马逊云科技 re:Invent 大会

授权声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区, 知乎,自媒体平台,第三方开发者媒体等亚马逊云科技官方渠道 2023年亚马逊AWS re:Invent大会宣布一项Amazon Q的创新项目&#x…