Skip to content

Projekt-Philosophie

Schlanker erweiterbarer Kern

Vite beabsichtigt nicht, jeden Anwendungsfall für jeden Benutzer abzudecken. Vite zielt darauf ab, die gängigsten Muster zur Erstellung von Webanwendungen von Anfang an zu unterstützen, aber der Vite-Kern muss schlank bleiben, um das Projekt langfristig wartbar zu halten. Dieses Ziel wird dank Vites Plugin-System auf Basis von Rollup ermöglicht. Funktionen, die als externe Plugins implementiert werden können, werden in der Regel nicht dem Vite-Kern hinzugefügt. vite-plugin-pwa ist ein großartiges Beispiel dafür, was mit dem Vite-Kern erreicht werden kann, und es gibt viele gut gewartete Plugins, um Ihre Bedürfnisse abzudecken. Vite arbeitet eng mit dem Rollup-Projekt zusammen, um sicherzustellen, dass Plugins in beiden normalen Rollup- und Vite-Projekten so weit wie möglich verwendet werden können, und versucht, erforderliche Erweiterungen in die Plugin-API einzubringen, wenn dies möglich ist.

Förderung des modernen Webs

Vite bietet anspruchsvolle Funktionen, die das Schreiben modernen Codes vorantreiben. Beispielsweise:

  • Der Quellcode kann nur in ESM geschrieben werden, wobei Nicht-ESM-Abhängigkeiten pre-bundled as ESM sein müssen, um zu funktionieren.
  • Web-Worker sollten mit der new Worker-Syntax geschrieben werden, um moderne Standards zu erfüllen.
  • Node.js-Module können nicht im Browser verwendet werden.

Wenn neue Funktionen hinzugefügt werden, werden diese Muster befolgt, um eine zukunftssichere API zu schaffen, die möglicherweise nicht immer mit anderen Build-Tools kompatibel ist.

Ein pragmatischer Ansatz zur Leistung

Vite hat sich seit seinen Ursprüngen auf die Leistung konzentriert. Die Architektur des Entwicklerservers von Vite ermöglicht HMR, das schnell bleibt, wenn Projekte wachsen. Vite verwendet native Tools wie esbuild und SWC, um intensive Aufgaben zu erledigen, behält jedoch den Rest des Codes in JS bei, um Geschwindigkeit und Flexibilität auszubalancieren. Bei Bedarf greifen Framework-Plugins auf Babel zurück, um den Benutzercode zu kompilieren. Und während des Build-Vorgangs verwendet Vite derzeit Rollup, bei dem die Größe des Bundles und der Zugang zu einer breiten Palette von Plugins wichtiger sind als die reine Geschwindigkeit. Vite wird sich intern weiterentwickeln und neue Bibliotheken verwenden, wenn sie erscheinen, um die DX zu verbessern, während die API stabil bleibt.

Aufbau von Frameworks auf Basis von Vite

Obwohl Vite von Benutzern direkt verwendet werden kann, glänzt es als Werkzeug zur Erstellung von Frameworks. Der Vite-Kern ist framework-agnostisch, aber es gibt ausgereifte Plugins für jede UI-Framework. Seine JS-API ermöglicht es Autoren von App-Frameworks, Vite-Funktionen zu verwenden, um maßgeschneiderte Erlebnisse für ihre Benutzer zu erstellen. Vite unterstützt SSR-Grundlagen, die normalerweise in höheren Tools vorhanden sind, aber für den Aufbau moderner Web-Frameworks unerlässlich sind. Und Vite-Plugins vervollständigen das Bild, indem sie eine Möglichkeit zum Teilen zwischen Frameworks bieten. Vite passt auch gut zu Backend-Frameworks wie Ruby und Laravel.

Eine aktive Community

Die Weiterentwicklung von Vite ist eine Zusammenarbeit zwischen Framework- und Plugin-Entwicklern, Benutzern und dem Vite-Team. Wir ermutigen zur aktiven Beteiligung an der Entwicklung des Vite-Kerns, sobald ein Projekt Vite übernimmt. Wir arbeiten eng mit den Hauptprojekten im Ökosystem zusammen, um Regressionen bei jeder Veröffentlichung zu minimieren, unterstützt von Tools wie vite-ecosystem-ci. Dies ermöglicht es uns, die CI großer Projekte mit Vite auf ausgewählten PRs auszuführen und uns einen klaren Status darüber zu verschaffen, wie das Ökosystem auf eine Veröffentlichung reagieren würde. Wir bemühen uns, Regressionen zu beheben, bevor sie die Benutzer erreichen, und erlauben Projekten, so schnell wie möglich auf die nächsten Versionen zu aktualisieren. Wenn Sie mit Vite arbeiten, laden wir Sie ein, sich Vites Discord anzuschließen und sich ebenfalls am Projekt zu beteiligen.

Veröffentlicht unter der MIT-Lizenz. (e300020a)