网易首页 > 网易号 > 正文 申请入驻

他把ESLint塞进了浏览器

0
分享至

一篇讲lint规则的文章,通常有个共同的缺口。

作者写"这条规则能捕获算法:["HS256", "none"]",贴一段代码,再贴一个检测结果。你读完了,心里想的是:行,但它对我的代码有效吗?文章回答不了这个问题。它只能展示别人的代码,展示作者在自己机器上跑出来的结果,截图放进文章里。你想知道这工具值不值得装,得先把它装一遍。


所以这位开发者不再写规则了,他直接把linter(代码检查工具)搬到了文章里。在那篇讲JWT(JSON Web Token,一种身份验证令牌标准)的文章里,现在有一个按钮,写着"Try it live"。点一下,粘贴你自己的jwt.verify调用,那条正式发布的规则就会在你的浏览器里、随着你的每一次按键实时运行,所有操作都不离开页面。

这件事之所以能实现,靠的是一个出乎意料的数字。

ESLint的浏览器版本

ESLint官方提供了一个浏览器构建版本。eslint/universal导出的Linter类,其公开接口不依赖任何Node.js环境——你把源代码和一份flat config(扁平配置)交给它,它把检测结果返回给你。没有文件系统,没有命令行工具,没有插件解析。

把两个真实的安全插件一起打包进去,体积是多少?

362KB,这是网络传输的大小,而且生产环境用的是brotli压缩——作者检查了响应头确认这一点。这个体积相当于一张中等尺寸的主图,比大多数营销网站为了渲染一个Cookie横幅加载的JavaScript还要小。

这个数字就是全部论点。如果是3MB,你只能写一篇关于规则的文章;但362KB,你可以直接把规则本身交付出去。

而且它是懒加载的:打包文件藏在一个明确的开关后面,读者不主动点击,文章就不会加载任何额外资源。按钮在消耗流量之前,会先告诉你它要消耗多少。

三个组成部分

整套方案由三块拼成:一个worker(后台工作线程)、一个构建步骤、一个客户端接口。就这么多。

worker持有linter和插件,它从不与服务器通信。代码里,插件列表是枚举出来的,不是动态加载的——worker只打包嵌入文章明确指定的插件,请求其他任何插件都会报错。linter实例在worker内部创建,收到消息后执行verify方法,把检测结果通过postMessage传回主线程。

构建步骤才是真正有意思的部分。用esbuild的buildSync方法,配合几个路径别名和一段banner注释,把worker入口文件打包成一个IIFE格式的、压缩过的、面向浏览器的单文件。Node.js特有的模块,通过shim文件在浏览器环境里模拟掉。

这个方案的巧妙之处在于,它把"写文章"和"跑代码"这两件事彻底解耦了。文章是静态的,但代码检查是活的。读者不再需要信任作者的截图,他们可以直接验证。

成本与收益的重新计算

从技术角度看,这不算什么革命性的创新——Web Worker、esbuild、ESLint的universal构建,这些技术都是现成的。真正的创新在于成本结构的改变。

过去,一篇技术文章的传播路径是:读者读文章 → 觉得有用 → 安装工具 → 跑一下 → 发现不适用 → 卸载。这个链条太长,每一步都在流失用户。

现在,路径变成了:读者读文章 → 点按钮 → 粘贴代码 → 立即看到结果。安装这个动作被完全省略了,而"立即看到结果"带来的反馈,比任何文字描述都有说服力。

362KB这个数字,恰好卡在了一个心理阈值上。它足够小,小到可以塞进一篇博客文章里而不觉得笨重;它又足够大,大到能承载两个真实的安全插件,跑出有实际意义的检测结果。

这不是一个关于ESLint的故事,这是一个关于交付方式的故事。当工具的体积缩小到一定程度,它就不再是工具,而变成了内容本身的一部分。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
笑发财了,果然穷人是不适合旅游的,网友:和家里没两样!

笑发财了,果然穷人是不适合旅游的,网友:和家里没两样!

夜深爱杂谈
2026-09-05 20:50:12
4-1!39岁法布雷加斯太神了,率队登顶意甲,皇马8000万弃将破门

4-1!39岁法布雷加斯太神了,率队登顶意甲,皇马8000万弃将破门

球场没跑道
2026-09-05 13:37:48
新京报这则删除的新闻,太魔幻了

新京报这则删除的新闻,太魔幻了

林中木白
2026-09-04 17:54:32
皇马0‑1爆冷输球!赛后揪出三大“罪人”,真是一个比一个低迷!

皇马0‑1爆冷输球!赛后揪出三大“罪人”,真是一个比一个低迷!

田先生篮球
2026-09-05 06:57:22
杨小菁,当选许昌市委书记(附简历)

杨小菁,当选许昌市委书记(附简历)

大风新闻
2026-09-05 16:42:02
今天,我们一起来吃个瓜吧

今天,我们一起来吃个瓜吧

西楼饮月
2026-09-04 16:35:24
河南一男子创业负债105万曾两次想轻生,学习胖东来理念将利润的50%分给员工后还清外债,购入30万新车想回馈胖东来

河南一男子创业负债105万曾两次想轻生,学习胖东来理念将利润的50%分给员工后还清外债,购入30万新车想回馈胖东来

潇湘晨报
2026-09-04 12:59:10
首盘6比1后遭逆转,加拿大选手费尔南德斯止步美网第三轮

首盘6比1后遭逆转,加拿大选手费尔南德斯止步美网第三轮

日常碎碎念啊
2026-09-05 02:05:14
央视直播美网第三轮时间表:9月5日,CCTV5+直播郑钦文冲击16强

央视直播美网第三轮时间表:9月5日,CCTV5+直播郑钦文冲击16强

薇说体育
2026-09-05 11:26:47
A股:今晚2.5亿股民,要兴奋到睡不着觉了,你知道为什么吗?

A股:今晚2.5亿股民,要兴奋到睡不着觉了,你知道为什么吗?

夜深爱杂谈
2026-09-05 20:36:09
一夜缩水四成!欧盟重拳落地,中国跨境电商低价出海时代彻底落幕

一夜缩水四成!欧盟重拳落地,中国跨境电商低价出海时代彻底落幕

江启
2026-09-05 11:05:17
别再喊收复台湾了

别再喊收复台湾了

乌克兰小静
2026-09-05 08:26:20
开幕前撤展?首尔连夜切割,得罪自己人,也不能落得高市的下场

开幕前撤展?首尔连夜切割,得罪自己人,也不能落得高市的下场

墨子翟的日记y
2026-09-05 14:20:42
70岁后不要做的6大体检,不仅没用还伤身,为您揭秘!

70岁后不要做的6大体检,不仅没用还伤身,为您揭秘!

鬼菜生活
2026-09-04 05:17:54
预警!联合国:史上最强厄尔尼诺降临,概率近100%将失控

预警!联合国:史上最强厄尔尼诺降临,概率近100%将失控

麓谷隐士
2026-09-06 00:10:03
一场3-2,踢出神剧情,德甲劲旅让二追三,第86分钟绝杀,极限翻盘创造奇迹

一场3-2,踢出神剧情,德甲劲旅让二追三,第86分钟绝杀,极限翻盘创造奇迹

足球狗说
2026-09-05 23:40:19
武大学术圈妲己上位后续:女方被曝更多猛料,她从小就是乖乖女!

武大学术圈妲己上位后续:女方被曝更多猛料,她从小就是乖乖女!

小娱乐悠悠
2026-09-05 14:51:35
年度最火女演员,靠"不透明"走红

年度最火女演员,靠"不透明"走红

碳基打工人
2026-09-05 00:37:58
美国女篮高兴早了,国际篮联官宣,中国女篮收获意外惊喜,球迷沸腾

美国女篮高兴早了,国际篮联官宣,中国女篮收获意外惊喜,球迷沸腾

日常万物志
2026-09-05 17:11:51
28.99万 !现代汽车正式上市!

28.99万 !现代汽车正式上市!

科技堡垒
2026-09-04 10:45:57
2026-09-06 02:11:00
码上闲叙
码上闲叙
有态度网友ytd
269文章数 90关注度
往期回顾 全部

科技要闻

华为何庭波,再次更新韬定律论文

头条要闻

患者疑将刀藏锦旗中连捅医生多刀 警方:嫌疑人被刑拘

头条要闻

患者疑将刀藏锦旗中连捅医生多刀 警方:嫌疑人被刑拘

体育要闻

本西蒙斯加盟国王,不管怎样,回来就好

娱乐要闻

阿Sa蔡卓妍首度求婚细节,感动落泪

财经要闻

被曝试药后死亡,药企董事竟怒怼记者

汽车要闻

千里浩瀚H5/30英寸大屏 星越L PLUS让你看到油车越级的一面

态度原创

艺术
旅游
本地
时尚
公开课

艺术要闻

14岁种下画家梦,51岁才拿起笔。她笔下的加拿大乡村,治愈了无数疲惫的灵魂!

旅游要闻

一川怒江碧水,百年古朴村寨,云雾漫染山野人间!

本地新闻

扒完小作文,富豪们私藏的度假胜地有多绝

推广中奖名单-更新至2026年8月25日推广

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版