← Cloudflare Workers / workers / runtime-apis
Webové standardy
Standardy JavaScriptu
Runtime Cloudflare Workers je postavené na enginu V8 pro JavaScript a WebAssembly. Workers runtime se aktualizuje minimálně jednou týdně, vždy alespoň na verzi V8 aktuálně používanou ve stabilním vydání Google Chrome. Díky tomu můžete bez obav používat nejnovější funkce JavaScriptu, aniž byste potřebovali transpilery.
Všechny standardní vestavěné objekty ↗ podporované aktuální stabilní verzí Google Chrome jsou podporovány, až na několik výjimek, které stojí za zmínku:
- Z bezpečnostních důvodů není povoleno následující:
eval()new FunctionWebAssembly.compile↗WebAssembly.compileStreaming↗WebAssembly.instantiates parametr buffer ↗WebAssembly.instantiateStreaming↗
Date.now()vrací čas posledního I/O; během provádění kódu se neposouvá.
Webové standardy a globální rozhraní API
Následující metody jsou k dispozici podle Globální rozsah Workeru ↗:
Pomocné metody Base64
-
atob()
- Dekóduje řetězec dat zakódovaný pomocí kódování base-64.
-
btoa()
- Vytvoří řetězec ASCII kódovaný v base-64 z řetězce binárních dat.
Časovače
-
setInterval()
- Naplánuje opakované spouštění funkce po uplynutí zadaného počtu milisekund.
-
clearInterval()
- Zruší opakované spuštění nastavené pomocí
setInterval()↗.
- Zruší opakované spuštění nastavené pomocí
-
setTimeout()
- Naplánuje spuštění funkce po uplynutí zadané doby.
-
clearTimeout()
- Zruší odložené spuštění nastavené pomocí
setTimeout()↗.
- Zruší odložené spuštění nastavené pomocí
-
- Vrátí Promise, který se vyřeší po uplynutí zadaného počtu milisekund.
await-ovatelná alternativa ksetTimeout().
- Vrátí Promise, který se vyřeší po uplynutí zadaného počtu milisekund.
performance.timeOrigin a performance.now()
-
performance.timeOrigin
- Vrátí počátek času s vysokým rozlišením. Workers používá jako počátek času epochu UNIX, což znamená, že
performance.timeOriginvždy vrátí0.
- Vrátí počátek času s vysokým rozlišením. Workers používá jako počátek času epochu UNIX, což znamená, že
-
performance.now()
- Vrátí
DOMHighResTimeStamppředstavující počet milisekund, které uplynuly odperformance.timeOrigin. Vezměte na vědomí, že Workers záměrně snižují přesnostperformance.now()tak, že vrací čas poslední I/O operace a během provádění kódu se neposouvá. V důsledku toho, a protožeperformance.timeOriginje vždy,0,performance.now()se vždy rovnáDate.now(), což zajišťuje konzistentní pohled na plynutí času uvnitř Workeru.
- Vrátí
EventTarget a Event
EventTarget ↗ a Event ↗ API umožňuje objektům publikovat a odebírat události.
AbortController a AbortSignal
AbortController ↗ a AbortSignal ↗ API poskytují společný model pro rušení asynchronních operací.
Globální fetch
- fetch()
- Zahájí proces načítání prostředku ze sítě. Viz Fetch API.
Encoding API
Obojí TextEncoder a TextDecoder podporují kódování a dekódování UTF-8.
Další informace najdete v dokumentaci MDN ↗.
TextEncoderStream ↗ a TextDecoderStream ↗ třídy jsou také k dispozici.
URL API
URL API podporuje URL adresy odpovídající schématům HTTP a HTTPS.
Další informace najdete v dokumentaci MDN ↗
Kompresní proudy
CompressionStream a DecompressionStream třídy podporují kompresní metody deflate, deflate-raw a gzip.
Další informace najdete v dokumentaci MDN ↗
URLPattern API
URLPattern API poskytuje mechanismus pro porovnávání URL adres pomocí přehledné syntaxe vzorů.
Další informace najdete v dokumentaci MDN ↗.
Intl
Intl API umožňuje formátovat data, časy, čísla a další hodnoty do formátu používaného v zadané jazykové oblasti (jazyk a region).
Další informace najdete v dokumentaci MDN ↗.
navigator.userAgent
Když global_navigator příznak kompatibility je nastaven, navigator.userAgent ↗ vlastnost k dispozici s hodnotou 'Cloudflare-Workers'. Lze to použít například ke spolehlivému zjištění, že kód běží v prostředí Workers.
Neošetřená odmítnutí Promise
unhandledrejection ↗ událost vyvolá globální rozsah, když je JavaScriptový příslib zamítnut bez připojené obslužné rutiny zamítnutí.
rejectionhandled ↗ událost vyvolá globální rozsah, když je zamítnutí JavaScriptového příslibu zpracováno pozdě (poté, co je k příslibu připojena obslužná rutina zamítnutí až po unhandledrejection událost už byla vyvolána).
addEventListener("unhandledrejection", (event) => {
console.log(event.promise); // The promise that was rejected.
console.log(event.reason); // The value or Error with which the promise was rejected.
});
addEventListener("rejectionhandled", (event) => {
console.log(event.promise); // The promise that was rejected.
console.log(event.reason); // The value or Error with which the promise was rejected.
});navigator.sendBeacon(url[, data])
Když global_navigator příznak kompatibility je nastaven, navigator.sendBeacon(...) ↗ API je k dispozici pro odesílání HTTP POST požadavek obsahující malé množství dat webovému serveru. Toto API je určeno pro asynchronní přenos analytických nebo diagnostických informací, a to bez záruky doručení.
Můžete například nahradit:
const promise = fetch("https://example.com", {
method: "POST",
body: "hello world",
});
ctx.waitUntil(promise);s navigator.sendBeacon(...):
navigator.sendBeacon("https://example.com", "hello world");Web File System Access API
Když enable_web_file_system příznak kompatibility je nastaven, Workers podporuje Web File System Access API ↗, které umožňuje číst a zapisovat soubory a adresáře do virtuálního souborového systému v prostředí Workeru. Toto API poskytuje přístup ke stejnému virtuálnímu souborovému systému v paměti jako node:fs modul ale nevyžaduje zapnutí kompatibility s Node.js.
const root = await navigator.storage.getDirectory();
export default {
async fetch(request) {
const fileHandle = await root.getFileHandle("hello.txt", { create: true });
const writable = await fileHandle.createWritable();
await writable.write("Hello, world!");
await writable.close();
const file = await fileHandle.getFile();
const contents = await file.text();
return new Response(contents, { status: 200 });
},
};Podrobnosti najdete v Dokumentace MDN ↗ další informace o používání tohoto API a node:fs dokumentace pro podrobnosti o struktuře virtuálního souborového systému a jeho omezeních.