Maison >interface Web >js tutoriel >Que fait Evan You en créant VoidZero et quels sont les problèmes avec les chaînes d'outils JS ?

Que fait Evan You en créant VoidZero et quels sont les problèmes avec les chaînes d'outils JS ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-26 01:49:13136parcourir

Bonjour, je m'appelle Fupeng Wang.

Je suis un ingénieur full-stack senior et auteur d'un projet open source de 17,5k, PMP. Maintenant, je développe une base de connaissances de style Notion
HuashuiAI, y compris l'écriture et la collaboration d'IA, en utilisant React Nextjs et Supabase.

Evan vous et VoidZero

Il y a deux mois, l'auteur de Vue et Vite, Evan You, a annoncé la création de la société VoiceZero et a reçu des millions de dollars d'investissement.

VoidZero sera basé sur Vite et développera deux outils majeurs, Rolldown et Oxc, pour unifier la chaîne d'outils JS front-end. Résolvez des problèmes tels que la fragmentation, l'incompatibilité et la faible efficacité.

L'outil de base VoidZero est développé en langage Rust, avec une efficacité d'exécution élevée et une vitesse rapide.

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

Quels sont les problèmes avec les chaînes d'outils JS

La chaîne d'outils JS comprend principalement des processus tels que l'analyse sémantique, le transformateur, le linter, le transformateur, le minificateur, le limiteur, etc.

Comment utilisons-nous actuellement ce type d'outils ? Quels sont les outils actuellement disponibles ? Quelle est la relation entre eux ? Sont-ils vraiment inefficaces et fragmentés ? Présentons-les un par un ci-dessous.

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

Notez que leur relation est quelque peu chaotique, certains étant capables de compiler et d'empaqueter, et ayant de nombreuses fonctions qui se chevauchent, il n'est donc pas nécessaire de les classer et de les comparer avec force.

Exécution JS

Le soi-disant runtime fait référence à l'environnement d'exécution d'un langage. S'il n'y a pas de moteur d'exécution, alors un langage n'est qu'une chaîne ou un fichier de chaîne qui ne peut pas être analysé et exécuté.

  • Nodejs est le runtime JS le plus courant, qui est stable, mature et possède un écosystème très riche.
  • Deno est un runtime JS développé ces dernières années, axé sur la prise en charge TS et la sécurité du réseau. Il a reçu un investissement de 20 millions de dollars au cours des deux premières années et a récemment publié Deno 2.0, qui se développe actuellement rapidement
  • Runtime Bun JS, Concentrez-vous sur les performances et tout-en-un
// Nodejs Deno 或 Bun,都是写 JS 代码
const server = Bun.serve({
  port: 3000,
  fetch(request) {
    return new Response("Welcome to Bun!");
  },
});

console.log(`Listening on localhost:${server.port}`);

Remarque : le runtime JS ne fait pas partie de la chaîne d'outils JS, il s'agit simplement de la fonctionnalité la plus basique, mais comprendre ces outils et termes peut aider à les distinguer de la chaîne d'outils JS. Vous ne l'avez peut-être pas utilisé, mais vous devez connaître son existence et ce qu'il fait.

Analyseur/Compilateur

Le développement Web front-end doit prendre en compte la compatibilité avec différents navigateurs, car les navigateurs modernes ne sont pas encore capables d'exécuter directement TS JSX et le dernier code ES.

Nous devons donc convertir TS JSX ES et d'autres codes de l'environnement de développement en code JS qui peut être exécuté par le navigateur, généralement ES5.

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

Babel a été l'un des premiers à faire ce travail, développé en JS, avec un écosystème et des plugins riches, et a longtemps été intégré dans des outils de packaging tels que webpack rollup.

Mais Babel est développé en JS, son efficacité de fonctionnement est donc relativement faible. De plus, Babel nécessite une configuration manuelle lors de la compilation de TS JSX, ce qui est assez fastidieux.

SWC est un compilateur JS développé en langage Rust, qui est 20 à 70 fois plus rapide que Babel (sur différents processeurs), et prend en charge nativement la syntaxe TS et JSX, visant à remplacer Babel. Vite utilise SWC en interne.

Rspack est développé en utilisant le langage Rust, mais ce n'est pas seulement un compilateur JS. C'est un outil d'emballage complet à haute efficacité.

Comme Rspack, ESBullid est développé en utilisant le langage Go et est un outil de packaging complet qui inclut un compilateur JS, ce qui le rend très efficace.

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

Linter et formateur

Les outils couramment utilisés dans cette section sont ESLint et Prettier, mais il existe également une certaine confusion dans leur utilisation

  • Il existe de nombreuses normes de configuration pour ESLint (telles que Recommandé, Airbnb, Google, StandardJS, etc.), et chacun peut les utiliser différemment. Différents projets peuvent également avoir des configurations différentes
  • ESLint et Prettier ont des fonctions en double, ce qui rend difficile leur choix lors de leur utilisation, et il peut y avoir des configurations en double

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

Minificateur

UglifyJS a été l'un des premiers à compresser le code JS, et maintenant son volume de téléchargement est également très important.

Terser est développé sur la base du code source UglifyJS, prenant en charge la nouvelle syntaxe ES6 et optimisant le tremblement des arbres.

Cependant, de nouveaux outils tels que SWC et esbulid prennent désormais également en charge la compression de code JS et leur efficacité d'exécution est plus élevée. Après tout, Rust ou Go ont intrinsèquement une efficacité d'exécution bien supérieure à celle de JS.

Limiteur

Les conditionneurs sont ceux avec lesquels nous sommes le plus fréquemment en contact, comme Webpack Vite et Parcel. Ce dernier n'est peut-être pas couramment utilisé, mais c'est aussi un outil bien établi.

Vite utilise SWC comme interprète, ce qui est très efficace. Utilisez esbulid pour le packaging dans l'environnement de développement et rollup pour le packaging dans l'environnement de production.

Pendant ce temps, esbulid (développé en langage Go, comme introduit précédemment) et rollup peuvent également être utilisés séparément comme outils d'empaquetage, et de nombreux plugins JS tiers sont empaquetés à l'aide de rollup.

Turbopack est un outil d'empaquetage JS développé par Vercel en utilisant Rust pour les projets Next.js, et peut également être utilisé indépendamment.

Rspack est un outil d'empaquetage JS développé avec Rust (avec un compilateur JS), qui peut remplacer webpack et est très rapide.

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

SWC développe également son propre outil d'emballage, swcpack - avec autant, pensez-vous que c'est compliqué ? Est-ce fragmenté ?

What is Evan You doing by creating VoidZero, and what are the issues with JS toolchains?

Pourquoi utiliser Rust

Vous pourriez être curieux de savoir pourquoi tant d'outils doivent être développés en langage Rust ? Il y a deux points principaux

  • Rust est un langage compilé qui peut être compilé en code natif et exécuté directement, avec des performances comparables à celles du C
  • La gestion de la mémoire Rust est plus sûre, tandis que la gestion de la mémoire C est plus sujette aux bugs

La fin

Retour sur trois problèmes liés aux chaînes d'outils JS

  • Fragmentation : C'est trop évident, il y a beaucoup d'outils répétitifs dans divers domaines, notamment les blocs
  • Incompatibilité : les anciens outils sont compatibles avec la nouvelle syntaxe, notamment TS JSX, et nécessitent une configuration excessive
  • Faible efficacité : cela est également très évident. Dans le domaine des outils, JS ne peut pas faire aussi bien que Rust, et ce n'est qu'une question de temps avant qu'il soit éliminé (pas de panique : il ne s'agit que du domaine des outils, et le domaine des applications est toujours JS et TS)

Ainsi, l'auteur de Vue, Evan You, a un œil vif, regarde très précisément et peut directement signaler les problèmes. De plus, il a un fort avantage et une forte adhérence dans cette partie, qui est Vite. Vite compte désormais un grand nombre d'utilisateurs et peut constituer un bon point d'entrée.

Lorsque des frameworks Web tels que Vue et des outils uniques tels que Vite rencontrent des goulots d'étranglement dans leur développement, Evan peut sortir de ce cercle, découvrir des problèmes de niveau supérieur et être capable de les exécuter sur le terrain. C'est quelque chose dont nous devrions tirer des leçons.

Enfin, avec autant d'investissement, VoidZero a besoin d'un retour sur investissement. Comment sera-t-il commercialisé à l’avenir ? Il est impossible de facturer Vite directement, alors comment pouvons-nous gagner de l'argent ?

Suivez-moi, j'analyserai en détail dans la section suivante. Cela aura plus de valeur que la technologie et le code.

Au fait, je recherche une opportunité d'emploi à l'international, si vous en avez l'occasion, n'hésitez pas à me connecter sur mon profil Github.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn