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.
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.
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.
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.
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 Deno 或 Bun,都是写 JS 代码 const server = Bun.serve({ port: 3000, fetch(request) { return new Response("Welcome to Bun!"); }, }); console.log(`Listening on localhost:${server.port}`);
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.
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.
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.
Die in diesem Abschnitt am häufigsten verwendeten sind ESLint und Prettier, aber es gibt auch einige Verwirrung bei ihrer Verwendung
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.
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.
SWC entwickelt auch sein eigenes Verpackungstool swcpack – denken Sie, dass es bei so vielen unordentlich ist? Ist es fragmentiert?
Sie fragen sich vielleicht, warum so viele Tools in der Rust-Sprache entwickelt werden müssen? Es gibt zwei Hauptpunkte
Rückblick auf drei Probleme mit JS-Toolchains
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!