Pretext.JS
Pretext.js: Een razendsnelle TypeScript-first bibliotheek voor tekstmeting zonder DOM-interactie en zonder browser reflow.
Pretext.js is een revolutionaire, pure JavaScript en TypeScript tekstlay-out engine ontworpen door Cheng Lou. Het lost een van de grootste prestatieproblemen in moderne webontwikkeling op: geforceerde synchrone reflow veroorzaakt door DOM-metingen zoals getBoundingClientRect. Door gebruik te maken van pure rekenkunde en de HTML5 Canvas API voor eenmalige glyph-meting, berekent Pretext.js de hoogte en lay-out van tekst tot wel 500 keer sneller dan traditionele methoden. Met volledige ondersteuning voor meer dan 12 schrifsystemen (waaronder CJK, Arabisch en Hindi) en nul externe afhankelijkheden, is het de ideale oplossing voor complexe UI-componenten zoals virtuele scroll-lijsten en AI-chatinterfaces. Pretext.js stelt ontwikkelaars in staat om tekstlay-outs te berekenen op basis van containerbreedte zonder ooit de DOM aan te raken, wat resulteert in vloeiende 60fps prestaties op elk apparaat.
2026-04-08
--K
Pretext.JS Productinformatie
Pretext.js: Razendsnelle Tekstmeting Zonder DOM-interactie
In de moderne webontwikkeling is tekstlay-out vaak een verborgen prestatie-bottleneck. Pretext.js biedt een revolutionaire oplossing door tekstmetingen en lay-outberekeningen volledig uit te voeren via rekenkunde, zonder ooit de DOM aan te raken. Dit betekent geen getBoundingClientRect, geen reflow en geen layout thrashing.
Wat is Pretext.js?
Pretext.js is een pure JavaScript en TypeScript-first bibliotheek die speciaal is ontwikkeld om de hoogte en lay-out van tekstblokken te berekenen zonder afhankelijk te zijn van de browser-rendering engine voor elke meting. Terwijl traditionele methoden de browser dwingen om de volledige lay-out te herberekenen (reflow) telkens wanneer een elementhoogte wordt opgevraagd, gebruikt Pretext.js een slimme aanpak: meet één keer via Canvas en bereken daarna alles met pure wiskunde.
Het resultaat is een engine die tekst lay-outt in ongeveer 2ms voor 1.000 blokken, wat tot 500 keer sneller is dan de traditionele DOM-gebaseerde aanpak. Pretext.js is ontwikkeld door Cheng Lou (bekend van het React core team) en wordt inmiddels op grote schaal gewaardeerd door de ontwikkelaarscommunity.
Kenmerken van Pretext.js
De kracht van Pretext.js zit in de efficiëntie en de TypeScript-native architectuur. Hier zijn de belangrijkste kenmerken:
- Zero DOM Reads: Na de initiële voorbereiding voert Pretext.js alle lay-outberekeningen uit via rekenkunde. Dit elimineert geforceerde synchrone reflows volledig.
- Echte Font Metrics: In plaats van schattingen gebruikt Pretext.js de
measureText()API van Canvas om exacte glyph-breedtes te verkrijgen die perfect overeenkomen met de browser-rendering. - Multilinguaal Design: Ondersteuning voor meer dan 12 schrifsystemen, waaronder CJK (Chinees, Japans, Koreaans), Arabisch, Hebreeuws, Thai en Hindi, inclusief correcte Unicode-segmentatie.
- TypeScript-Native: Volledig geschreven in TypeScript met nauwkeurige types voor alle functies en parameters.
- Herbruikbare 'Handles': Een tekst die één keer is voorbereid met de
prepare()functie, kan direct worden gebruikt om hoogtes te berekenen voor verschillende containerbreedtes (mobiel, tablet, desktop). - Geen Afhankelijkheden: Een lichtgewicht pakket zonder externe dependencies of polyfills.
Hoe Pretext.js Werkt
Het proces van Pretext.js verloopt in drie eenvoudige stappen die de prestaties maximaliseren:
- Segmentatie: De tekst wordt genormaliseerd en gesplitst in meetbare eenheden op basis van Unicode-afbreekregels.
- Meting via Canvas: Elk segment wordt door de Canvas-engine gehaald om de werkelijke breedte te bepalen. Deze resultaten worden gecached.
- Pure Rekenkunde: Op basis van de opgegeven containerbreedte berekent Pretext.js de regelafbrekingen en de totale hoogte door breedtes simpelweg op te tellen. Er komt geen DOM-element aan te pas.
Gebruiksscenario's (Use Cases)
Pretext.js blinkt uit in scenario's waar traditionele DOM-metingen de gebruikerservaring vertragen:
Variabele Hoogte Virtueel Scrollen
Het renderen van een lijst met 10.000 items met variabele teksthoogtes kan normaal gesproken leiden tot schokkerige animaties. Met Pretext.js bereken je alle hoogtes onmiddellijk, wat zorgt voor een vloeiende 60fps scroll-ervaring.
AI Chatinterfaces
Bij streaming AI-reacties verandert de teksthoogte voortdurend. Gebruik Pretext.js om de hoogte van chatbubbels vooraf te berekenen voordat ze volledig gerenderd zijn, waardoor hinderlijke 'content jumps' worden voorkomen.
Internationale Content Feeds
Sociale feeds met een mix van verschillende talen (zoals Arabisch en Koreaans) kunnen complex zijn om te meten. Pretext.js handelt verschillende schrifsystemen accuraat af in één enkele lay-out-pass.
Hoe te Gebruiken
Het implementeren van Pretext.js in je project is eenvoudig en kan binnen enkele minuten via npm, pnpm of bun.
Installatie
npm install @chenglou/pretext
Quick Start Voorbeeld
import { prepare, layout } from '@chenglou/pretext'
// Stap 1: Bereid de tekst en het font één keer voor
const handle = prepare(
'Hallo, pretext.js — geen reflow nodig.',
'16px "Inter"'
);
// Stap 2: Bereken de lay-out voor elke breedte, direct
const { height, lineCount } = layout(
handle,
400, // container breedte in pixels
24 // regelhoogte in pixels
);
console.log(height); // Geeft de exacte hoogte terug
console.log(lineCount); // Geeft het aantal regels terug
Veelgestelde Vragen (FAQ)
V: Waarom is Pretext.js sneller dan de standaard browser-aanpak? A: De browser moet bij elke meting de hele lay-outboom controleren en stijlen toepassen. Pretext.js omzeilt dit door alleen de noodzakelijke wiskunde uit te voeren buiten de DOM om.
V: Ondersteunt Pretext.js complexe lay-outs zoals CSS Shapes? A: Ja, het kan zelfs dingen die CSS Shapes niet kunnen, zoals tekst tegelijkertijd aan beide zijden van een object laten vloeien, volledig via rekenkunde.
V: Moet ik voor elke schermgrootte opnieuw de tekst voorbereiden? A: Nee, de
prepare()functie hoeft slechts één keer per tekst/font-combinatie te worden aangeroepen. De resulterende 'handle' kan vervolgens direct worden gebruikt voor elke willekeurige containerbreedte via delayout()functie.
V: Is Pretext.js geschikt voor alle browsers? A: Ja, het vertrouwt op standaard browser API's zoals de Canvas API die in alle moderne browsers beschikbaar zijn.








