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.
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.
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.
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.
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 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.
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.
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.
Les outils couramment utilisés dans cette section sont ESLint et Prettier, mais il existe également une certaine confusion dans leur utilisation
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.
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.
SWC développe également son propre outil d'emballage, swcpack - avec autant, pensez-vous que c'est compliqué ? Est-ce fragmenté ?
Vous pourriez être curieux de savoir pourquoi tant d'outils doivent être développés en langage Rust ? Il y a deux points principaux
Retour sur trois problèmes liés aux chaînes d'outils JS
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!