Repository navigation
Performance de
🌐 Diese Seite auf: English · Português · Español · Français · Deutsch
Der Schwerpunkt von eQuantic.UI liegt darauf, eine Single-Page-Application-Erfahrung (SPA) mit minimalem Mehraufwand zu liefern und dabei die Kraft von C# zu nutzen, um hochoptimierten Frontend-Code zu erzeugen.
Das virtuelle DOM-System wurde entworfen, um effizient zu sein und Zustandsänderungen vorauszusehen.
Der Reconciliation-Algorithmus nutzt eine effiziente Keyed-Diffing-Strategie auf Basis des Algorithmus der längsten aufsteigenden Teilfolge (LIS).
-
Die Key-Eigenschaft: Die Eigenschaft
keyidentifiziert Elemente über Renderings hinweg. Elemente mit demselben Key werden wiederverwendet und an ihrem Platz aktualisiert. - LIS-Optimierung: Werden Elemente neu geordnet, berechnet der Algorithmus die längste aufsteigende Teilfolge, um DOM-Bewegungen zu minimieren. Nur Elemente außerhalb der LIS müssen bewegt werden.
- Präfix-/Suffix-Optimierung: Gemeinsame Präfixe und Suffixe werden zuerst und ohne komplexes Diffing verarbeitet, was die Performance typischer Listenoperationen verbessert (hinten anfügen, vorn anfügen).
- Speichereffizienz: Unbewegte Elemente behalten ihren Browserzustand (Eingabefokus, Scrollposition usw.).
Speicherlecks werden durch den klugen Einsatz schwacher Referenzen und automatischer Aufräumarbeit gemildert.
Event-Listener werden mit WeakMap<HTMLElement, Map<string, EventHandler>> verfolgt.
-
Schwache Referenzen:
WeakMaperlaubt dem Garbage Collector, DOM-Elemente einzusammeln, wenn sie aus dem Baum entfernt werden, selbst wenn das Framework noch interne Referenzen auf ihre Handler hält. -
Automatisches Aufräumen: Beim Entfernen einer Komponente versucht der Reconciler, die Listener ausdrücklich abzuklemmen, aber die
WeakMapdient als Sicherheitsnetz gegen Lecks in komplexen Lebenszyklen.
Das SDK nutzt eine eingebettete Bun-Binary, um die endgültige Ausgabe zu verarbeiten.
- Build-Performance: Bun verarbeitet TS-/JS-Dateien bis zu zehnmal schneller als Werkzeuge auf Node.js-Basis.
- Tree-Shaking: Toter Code wird beim Build automatisch entfernt.
- Minifizierung: Skripte werden komprimiert ausgeliefert.
Ein Style ist ein abstrakter C#-Wert (BoxStyle, Layout-Props, Rollen), nie CSS. Der Web-Realisierer
verwandelt jede Eigenschaft in eine deduplizierte ATOMARE Klasse, benannt nach einem Hash des Wertes
(dieselbe FNV-Regel auf dem Server (StyleAtomizer) und im Browser (style-atomizer.ts)), sodass
das Markup, das SSR schrieb, und der Baum, den der Client baut, eine Klasse für einen Style nennen,
und die Hydration nichts umschreibt.
- Eine Regel je unterschiedlichem Wert: Hundert Karten mit einem Style teilen seine Klassen, statt hundert Inline-Style-Strings zu wiederholen.
-
Kein Stylesheet zu holen: Der Server schreibt die Regeln, die eine Seite nutzt, in die Seite
selbst (
<style id="eq-atomic">), und der Browser fügt dieser Seite beim ersten Mal, wenn sein Baum eine Klasse braucht, die die Seite nicht hatte, eine Regel hinzu. - Kein Layout-Sprung durch das Styling: Die Klassen, die der Server gerendert hat, sind die, die der Client behält.
- Chunks je Seite: Jede Seite ist ihr eigenes Modul, das der Boot bei der ersten Navigation dorthin importiert, und was zwei oder mehr Seiten teilen, ist ein Chunk, den bun einmal heraustrennt. Der Nutzer lädt nur, was für die aktuelle Route nötig ist.
- Lazy Loading: Komplexe Komponenten und Bibliotheken können bei Bedarf geladen werden.
🏁 Hier starten
🏗️ Architektur
- Architekturüberblick
- Write-once-Komponenten
- Deklarative Oberfläche
- Paketarchitektur
- Komponenten
- Styling
- Lokalisierung
- Analytics und GTM
📱 Write-once
- Photon-Engine
- Design System
- Fähigkeiten
- Speicher
- Formulare
- Code-Editor
- Markdown
- Mermaid
- E-Mail-Rendering
⚙️ Kompilierung
⚡ Runtime
🔌 Server
🎨 Ökosystem
🚀 Entwicklung