Heim > Web-Frontend > js-Tutorial > Was macht Evan You mit der Erstellung von VoidZero und was sind die Probleme mit JS-Toolchains?

Was macht Evan You mit der Erstellung von VoidZero und was sind die Probleme mit JS-Toolchains?

Mary-Kate Olsen
Freigeben: 2024-12-26 01:49:13
Original
139 Leute haben es durchsucht

Hallo, mein Name ist Fupeng Wang.

Ich bin ein leitender Full-Stack-Ingenieur und Autor eines 17,5.000 Open-Source-Projekts, PMP. Jetzt entwickle ich eine Wissensdatenbank im Notion-Stil
HuashuiAI einschließlich KI-Schreiben und Zusammenarbeit unter Verwendung von React Nextjs und Supabase.

Evan You und VoidZero

Vor zwei Monaten gab der Vue- und Vite-Autor Evan You die Gründung des Unternehmens VoiceZero bekannt und erhielt eine Investition in Millionenhöhe.

VoidZero wird auf Vite basieren und zwei Haupttools entwickeln, Rolldown und Oxc, um die Front-End-JS-Toolchain zu vereinheitlichen. Beheben Sie Probleme wie Fragmentierung, Inkompatibilität und geringe Effizienz.

Das VoidZero-Kerntool wurde in der Rust-Sprache entwickelt und bietet eine hohe Laufeffizienz und hohe Geschwindigkeit.

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

Was sind die Probleme mit JS-Toolchains?

Die JS-Toolchain umfasst hauptsächlich Prozesse wie semantische Analyse, Transformer, Linter, Transformer, Minifier, Bounder usw.

Wie nutzen wir derzeit diese Art von Tools? Welche Tools sind derzeit verfügbar? Welche Beziehung besteht zwischen ihnen? Sind sie wirklich ineffizient und fragmentiert? Lassen Sie uns sie unten einzeln vorstellen.

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

Beachten Sie, dass ihre Beziehung etwas chaotisch ist. Einige können kompilieren und verpacken und haben viele überlappende Funktionen, sodass keine Notwendigkeit besteht, sie zwangsweise zu klassifizieren und zu vergleichen.

JS-Laufzeit

Die sogenannte Laufzeit bezieht sich auf die Laufzeitumgebung einer Sprache. Wenn es keine Laufzeit gibt, ist eine Sprache nur ein String oder eine String-Datei, die nicht analysiert und ausgeführt werden kann.

  • Nodejs ist die am weitesten verbreitete JS-Laufzeit, die stabil und ausgereift ist und über ein sehr reichhaltiges Ökosystem verfügt.
  • Deno ist eine in den letzten Jahren entwickelte JS-Laufzeitumgebung mit Schwerpunkt auf TS-Unterstützung und Netzwerksicherheit. Das Unternehmen erhielt in den ersten zwei Jahren eine Investition von 20 Millionen US-Dollar und veröffentlichte kürzlich Deno 2.0, das sich derzeit rasant entwickelt
  • Bun JS-Laufzeit, Konzentrieren Sie sich auf Leistung und All-in-One
// 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}`);
Nach dem Login kopieren

Hinweis: Die JS-Laufzeit ist kein Teil der JS-Toolchain, sondern lediglich die grundlegendste Funktion. Das Verständnis dieser Tools und Begriffe kann jedoch dabei helfen, sie von der JS-Toolchain zu unterscheiden. Sie haben es vielleicht noch nicht benutzt, aber Sie müssen wissen, dass es existiert und was es tut.

Parser/Compiler

Bei der Web-Frontend-Entwicklung muss die Kompatibilität mit verschiedenen Browsern berücksichtigt werden, da moderne Browser noch nicht in der Lage sind, TS JSX und den neuesten ES-Code direkt auszuführen.

Also müssen wir TS JSX ES und anderen Code in der Entwicklungsumgebung in JS-Code konvertieren, der vom Browser ausgeführt werden kann, normalerweise ES5.

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

Babel war einer der ersten, der diese Aufgabe erledigte. Es wurde mit JS entwickelt, verfügt über ein umfangreiches Ökosystem und Plugins und ist seit langem in Verpackungstools wie Webpack Rollup integriert.

Aber Babel wurde in JS entwickelt, daher ist seine Laufeffizienz relativ gering. Darüber hinaus erfordert Babel beim Kompilieren von TS JSX eine manuelle Konfiguration, was ziemlich umständlich ist.

SWC ist ein in der Rust-Sprache entwickelter JS-Compiler, der 20–70 Mal schneller als Babel ist (auf verschiedenen CPUs) und nativ TS- und JSX-Syntax unterstützt, mit dem Ziel, Babel zu ersetzen. Vite verwendet SWC intern.

Rspack wird mit der Rust-Sprache entwickelt, ist aber nicht nur ein JS-Compiler. Es handelt sich um ein umfassendes Verpackungstool mit hoher Effizienz.

ESBullid wird wie Rspack mit der Go-Sprache entwickelt und ist ein umfassendes Paketierungstool, das einen JS-Compiler enthält, was es äußerst effizient macht.

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

Linter & Formatter

Die in diesem Abschnitt am häufigsten verwendeten sind ESLint und Prettier, aber es gibt auch einige Verwirrung bei ihrer Verwendung

  • Es gibt viele Konfigurationsstandards für ESLint (z. B. Empfohlen, Airbnb, Google, StandardJS usw.), und jeder verwendet sie möglicherweise anders. Unterschiedliche Projekte können auch unterschiedliche Konfigurationen haben
  • ESLint und Prettier haben einige doppelte Funktionen, was die Auswahl bei deren Verwendung erschwert, und es kann zu doppelten Konfigurationen kommen

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

Minifier

UglifyJS war eines der ersten Unternehmen, das zum Komprimieren von JS-Code verwendet wurde, und mittlerweile ist auch das Download-Volumen sehr groß.

Terser wurde auf Basis des UglifyJS-Quellcodes entwickelt, unterstützt die neue ES6-Syntax und optimiert Tree Shaking.

Neue Tools wie SWC und esbulid unterstützen jedoch jetzt auch die JS-Codekomprimierung und ihre Ausführungseffizienz ist höher. Schließlich haben Rust oder Go von Natur aus eine viel höhere Ausführungseffizienz als JS.

Boundler

Verpacker sind diejenigen, mit denen wir am häufigsten in Kontakt kommen, wie zum Beispiel Webpack Vite und Parcel. Letzteres wird zwar nicht häufig verwendet, ist aber ebenfalls ein etabliertes Werkzeug.

Vite verwendet SWC als Dolmetscher, was sehr effizient ist. Verwenden Sie esbulid zum Verpacken in der Entwicklungsumgebung und Rollup zum Verpacken in der Produktionsumgebung.

Mittlerweile können esbulid (entwickelt in der Go-Sprache, wie bereits erwähnt) und Rollup auch separat als Verpackungstools verwendet werden, und viele JS-Plugins von Drittanbietern werden mithilfe von Rollup gepackt.

Turbopack ist ein JS-Paketierungstool, das von Vercel unter Verwendung von Rust für Next.js-Projekte entwickelt wurde und auch unabhängig verwendet werden kann.

Rspack ist ein mit Rust (zusammen mit einem JS-Compiler) entwickeltes JS-Paketierungstool, das Webpack ersetzen kann und sehr schnell ist.

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

SWC entwickelt auch sein eigenes Verpackungstool swcpack – denken Sie, dass es bei so vielen unordentlich ist? Ist es fragmentiert?

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

Warum Rust verwenden?

Sie fragen sich vielleicht, warum so viele Tools in der Rust-Sprache entwickelt werden müssen? Es gibt zwei Hauptpunkte

  • Rust ist eine kompilierte Sprache, die in nativen Code kompiliert und direkt ausgeführt werden kann, mit einer Leistung, die mit C vergleichbar ist
  • Rust-Speicherverwaltung ist sicherer, während C-Speicherverwaltung anfälliger für Fehler ist

Das Ende

Rückblick auf drei Probleme mit JS-Toolchains

  • Fragmentierung: Das ist zu offensichtlich, es gibt viele sich wiederholende Werkzeuge in verschiedenen Bereichen, insbesondere Felsbrocken
  • Inkompatibilität: Alte Tools sind mit der neuen Syntax, insbesondere TS JSX, kompatibel und erfordern eine übermäßige Konfiguration
  • Geringe Effizienz: Auch das ist sehr offensichtlich. Im Tool-Bereich kann JS nicht so gut abschneiden wie Rust und es ist nur eine Frage der Zeit, bis es eliminiert wird (keine Panik: Dies ist nur der Tool-Bereich, und der Anwendungsbereich ist immer noch JS und TS)

Vue-Autor Evan You hat also ein scharfes Auge, sieht sehr genau und kann Probleme direkt aufzeigen. Darüber hinaus hat er in diesem Teil, nämlich Vite, einen starken Vorteil und Griff. Vite hat mittlerweile eine große Anzahl von Benutzern und kann als guter Einstiegspunkt dienen.

Wenn Web-Frameworks wie Vue und einzelne Tools wie Vite in ihrer Entwicklung auf Engpässe stoßen, kann Evan aus diesem Kreis ausbrechen, Probleme auf höherer Ebene entdecken und sie vor Ort ausführen. Daraus sollten wir lernen.

Schließlich braucht VoidZero bei so viel Investition eine Kapitalrendite. Wie wird es in Zukunft kommerzialisiert? Es ist unmöglich, Vite direkt zu belasten. Wie können wir also Geld verdienen?

Folgen Sie mir, ich werde es im nächsten Abschnitt ausführlich analysieren. Das wird wertvoller sein als Technologie und Code.

Übrigens bin ich auf der Suche nach einer internationalen Jobmöglichkeit. Wenn Sie die Möglichkeit haben, können Sie mich gerne auf meinem Github-Profil vernetzen.

Das obige ist der detaillierte Inhalt vonWas macht Evan You mit der Erstellung von VoidZero und was sind die Probleme mit JS-Toolchains?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage