首页 > 其他分享 >揭秘!尤雨溪成立的VoidZero如何改变前端世界

揭秘!尤雨溪成立的VoidZero如何改变前端世界

时间:2024-10-09 13:13:13浏览次数:1  
标签:VoidZero 尤雨溪 AST 语法 抽象 工具 揭秘 Vite

前言

VueVite之父尤雨溪宣布成立公司 VoidZero,目前已经融资3200万。这篇文章欧阳将带你了解VoidZero是如何改变javascript的世界!

关注公众号:【前端欧阳】,给自己一个进阶vue的机会

痛点1: 工具太多,学不动

  • 公司项目一般是多人维护,为了保证大家写出来的代码风格一致,以及在coding时就能发现代码错误,所以我们需要在项目中使用ESLint

  • 写代码时如果手动去调整代码格式,那也太累了。这时我们就需要一个自动化格式代码的工具,所以我们会在项目中使用Prettier

  • 我们在代码中使用了TypeScript,明显浏览器是不认识TypeScript的,所以这时我们需要通过Babel将TypeScript转换为浏览器认识的Javascript。

  • 写完代码后我们需要使用单元测试对我们的代码进行测试,所以这时就需要引入测试工具Vitest或者jest

  • 测试完成后需要发布到生产环境,此时我们需要将代码打包,就需要使用Webpack或者Rollup打包工具。

从上面的流程可以看到我们的前端项目中引入了非常多的工具,并且这些工具都需要有各自的配置才能让我们的项目跑起来(实际上项目中使用到的工具比上面举例还要多)。
因为这些工具配置非常多,而且还特别复杂,以至于都出现了一个特殊的岗位—— webpack配置工程师

很多脚手架工具应运而生,其中的典型代表就是Vite。这些脚手架将这些工具的复杂配置封装在其内部,开发者只需要使用其暴露出来的简化后的配置即可。

脚手架封装这些工具的策略也很简单,使用胶水将这些工具粘贴起来。如果开发者有一些个性化需求时,还是不得不面对这些工具复杂的配置。

痛点2: 性能浪费,跑不快

这些工具基本都需要将源代码编译成AST抽象语法树,然后去遍历AST抽象语法树对源代码进行处理。

但是由于这些工具都是不同的人或者团队开发的,所以他们定义的AST抽象语法树格式大都相同。AST抽象语法树在这些工具之间大多不能直接复用,所以需要重复生成AST抽象语法树

比如在babel处理代码时生成一次AST抽象语法树,但是在eslint阶段时同样也生成了一次AST抽象语法树

如果能够使用同一个AST抽象语法树,那么只需要初始化时将源代码编译成AST抽象语法树,后续在不同的阶段都可以直接复用了。

比如在将TypeScript转换成Javascript阶段时只需要递归遍历初始化时生成的AST抽象语法树,然后对这棵树进行处理。在eslint阶段同样是遍历初始化时生成的AST抽象语法树就可以了。

VoidZero是做什么的?

VoidZero公司的出现就是为了从根源解决上面的这两个javascript工具链的痛点,而不是简单的使用胶水将这些工具粘贴起来。

VoidZero公司下面主要包含两个项目: RolldownOxc,就这两个项目就值3200万

VoidZero的官网介绍是:

我们的使命是让 Web 开发人员比以往更加高效。

说人话就是有了VoidZero后,开发人员以后使用Vite将会变得更加好用

下面这个是VoidZero的规划图:
future

这个规划图对于普通开发者来说有什么影响呢?

对于普通开发者来说仍然还是使用Vite,单元测试依然还是Vitest,并没有增加额外的心智负担。但是却比以前变得更加好用,接下来我将给你解释为什么会变得更加好用

kuai

好用体现在Vite不再依赖于EsbuildRollup了,而是只使用Rolldown就可以了,降低了开发者的心智负担。并且Rolldown还完全兼容Rollup以前的API,无需担心使用Rolldown后项目不兼容的问题。

Rolldown其实就是一个使用Rust开发的类似于Rollup的打包工具,专门设计给Vite使用的。因为是使用Rust开发的,所以他的速度超级快。

一个普通的前端项目无非就那么几个阶段:

  • 首先是parser阶段,在这个阶段会根据源代码生成AST抽象语法树。

  • 接着就是transform转换阶段,在这个阶段会去遍历parser阶段生成的AST抽象语法树将源代码转换成我们想要的样子。

  • 很多前端工具都是在这一阶段去实现的,比如babel、typescript、jsx等。但是这些工具大多都各自为政,生成的AST抽象语法树可能都不同。所以会导致会不断的进行parser阶段去生成AST抽象语法树,从而导致性能浪费和速度变慢。


  • 换阶段完成后就是打包阶段,在这个阶段会生成最终的打包后的文件。
    在这些阶段中会涉及到很多前端工具,但是这些工具都是不同的人开发的,用起来心智负担也很大。而Rolldown却可以提供这些阶段的所有功能,包括parser解析transform转换bundle打包等。
    之所以Rolldown这么牛逼,主要还是他底层依赖于 OxcOxc提供了一系列的JavaScript 工具,比如Parser(生成AST抽象语法树)、Linter(对标ESLint)、Transformer(将TypeScript、JSX转换为javascript)、Minifier(压缩代码)、Formatter(格式化代码)等。

oxc

从VoidZero的规划图中来看 Oxc将会提供我们所需的前端工具中的所有功能,并且都是使用rust去实现的(只能说牛逼!!)。

Rolldown所扮演的角色是将 Oxc提供的这些工具整合起来,然后提供给Vite去使用。对于开发者来说无需去了解那么多工具的配置,只需要去搞清楚Vite的配置即可,大大减少了开发者的心智负担。

并且由于这些工具都是由 Oxc提供的,都是一套AST抽象语法树,所以这些工具都能复用AST抽象语法树,无需去生成多次,这就是的第一个原因。

不管是Rolldown还是 Oxc他们都是使用rust开发的,速度当然比js快得多,这也就是的第二个原因。

总结

尤大创建的VoidZero公司的rolldownOxc这两个价值3200万的项目不光提供了打包功能,还提供了前端生态系统中所需要的所有工具。对于普通开发者来说VoidZero的出现会让我们的Vite项目变得更加好用。如果VoidZero的规划图能够实现,VoidZero将会有一统前端工具链天下的趋势。

关注公众号:【前端欧阳】,给自己一个进阶vue的机会

另外欧阳写了一本开源电子书vue3编译原理揭秘,看完这本书可以让你对vue编译的认知有质的提升。这本书初、中级前端能看懂,完全免费,只求一个star。

标签:VoidZero,尤雨溪,AST,语法,抽象,工具,揭秘,Vite
From: https://www.cnblogs.com/heavenYJJ/p/18453853

相关文章

  • 探索创新宝库:一站式免费专利检索工具揭秘!
    在这个知识爆炸的时代,专利不仅是创新成果的保护伞,更是技术发展的指南针。对于研究者、发明家、企业乃至普通爱好者,专利检索成为了探索技术前沿、规避侵权风险、激发创新灵感的重要手段。今天,我们将带您了解一款集多功能于一身的免费专利检索网站,它将彻底改变您的专利检索体验。......
  • 揭秘动态化跨端框架在鸿蒙系统下的高性能解决方案
    作者:京东科技胡大海前言动态化跨端框架(后文统称“动态化”)是一个由京东金融大前端团队全自主研发的,一份代码,可以在HarmonyOS、iOS、Android、Web四端运行的跨平台解决方案。在研发团队使用后可大幅降低研发人力成本;为业务提供实时触达、A/B触达等能力以提升业务投放效率;同时......
  • 揭秘SQL执行顺序:从混乱到有序的数据之旅
    在数据分析的世界里,SQL(StructuredQueryLanguage)是我们与数据库对话的语言。无论你是在处理销售数据、用户行为分析,还是进行复杂的数据挖掘,理解SQL的执行顺序无疑是提升查询效率和准确性的关键。今天,我们就来揭开SQL执行顺序的神秘面纱,带你从混乱到有序,开启一段数据之旅。1.......
  • 【AI绘画:月入万元的秘籍】揭秘!这个AI绘画神器不仅让你拥有艺术天赋,还能轻松变现!跟着教
    随着AI的飞速发展,三页AI成为了创新艺术的新宠。它利用先进算法和大数据,使得个性化设计变得触手可及,轻松将你的照片变成独特的卡通形象。现在,每个人都有机会成为AI设计师!今天为大家介绍一款上手非常简单的三页AI平台,对AI小白十分友好,无需魔法,微信即可直接使用!有了三页AI的加......
  • 【揭秘测绘艺术】从基础到法律,绘制地球的智慧蓝图
    在人类探索与塑造世界的征途中,有一门古老而又现代的科学默默发挥着基石作用——测绘。它不仅仅是地图的绘制,更是对地球空间信息的精准捕捉与智慧应用。今天,让我们一起走进测绘的世界,解码“测绘”与“基础测绘”的内涵,并探讨实施《测绘法》的重要意义。什么是测绘?......
  • 【股市前瞻】10月“金股”大揭秘:宁德时代独领风骚,还有哪些黑马股将脱颖而出?
    随着9月牛市的余温未散,投资者们纷纷将目光投向即将到来的10月股市。在这个关键时刻,券商机构发布的金股组合无疑成为了市场关注的焦点。据wind数据显示,目前已有10余家券商发布了10月金股名单,涵盖了非银金融、新能源、医药、半导体等多个热门领域。在这些备受瞩目的个股中,宁德时......
  • 36_初识搜索引擎_分页搜索以及deep paging性能问题深度图解揭秘
    课程大纲1、讲解如何使用es进行分页搜索的语法size,fromGET/_search?size=10GET/_search?size=10&from=0GET/_search?size=10&from=20分页的上机实验GET/test_index/test_type/_search"hits":{"total":9,"max_score":1,我们假设将这9条数据分成3页,每一页是3条数......
  • 37_初识搜索引擎_快速掌握query string search语法以及_all metadata原理揭秘
    1、querystring基础语法GET/test_index/test_type/_search?q=test_field:testGET/test_index/test_type/_search?q=+test_field:testGET/test_index/test_type/_search?q=-test_field:test一个是掌握q=field:searchcontent的语法,还有一个是掌握+和-的含义2、_allmetada......
  • 34_初识搜索引擎_search结果深入解析(search timeout机制揭秘)
    课程大纲1、我们如果发出一个搜索请求的话,会拿到一堆搜索结果,本节课,我们来讲解一下,这个搜索结果里的各种数据,都代表了什么含义2、我们来讲解一下,搜索的timeout机制,底层的原理,画图讲解GET/_search{"took":6,"timed_out":false,"_shards":{"total":6,"successful":6,......
  • 32_分布式文档系统_document查询内部原理图解揭秘
    1、客户端发送请求到任意一个node,成为coordinatenode2、coordinatenode对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮询算法,在primaryshard以及其所有replica中随机选择一个,让读请求负载均衡3、接收请求的node返回document给coordinatenode4、coor......