INTEGRITY Dokumentace

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:


Webové standardy a globální rozhraní API

Následující metody jsou k dispozici podle Globální rozsah Workeru:

Pomocné metody Base64

Časovače

performance.timeOrigin a performance.now()

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


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.


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).

worker.js
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.
});

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.