跳转到内容
搜索文档

Web 标准

最后更新 查看 MarkdownAgent 设置

JavaScript 标准

Cloudflare Workers 运行时构建于 V8 JavaScript 和 WebAssembly 引擎之上。Workers 运行时至少每周更新一次,至少更新到 Google Chrome 稳定版当前使用的 V8 版本。这意味着您可以安全地使用最新的 JavaScript 功能,无需转译器。

当前 Google Chrome 稳定版支持的所有标准内置对象均受支持,但有以下显著例外:


Web 标准与全局 API

以下方法根据 Worker Global Scope 提供:

Base64 实用方法

  • atob()

    • 解码使用 base-64 编码的数据字符串。
  • btoa()

    • 从二进制数据字符串创建 base-64 编码的 ASCII 字符串。

定时器

  • setInterval()

    • 安排函数在指定的毫秒数间隔重复执行。
  • clearInterval()

  • setTimeout()

    • 安排函数在指定时间后执行。
  • clearTimeout()

  • scheduler.wait()

    • 返回一个在指定毫秒数后解析的 Promise。是 setTimeout() 的可 await 替代方案。

performance.timeOrigin and performance.now()

  • performance.timeOrigin

    • 返回高分辨率时间原点。Workers 使用 UNIX 纪元作为时间原点,这意味着 performance.timeOrigin 始终返回 0
  • performance.now()

    • 返回 DOMHighResTimeStamp,表示自 performance.timeOrigin 以来经过的毫秒数。请注意,Workers 有意降低 performance.now() 的精度,使其返回最后一次 I/O 的时间,在代码执行期间不会推进。实际上,由于此原因以及 performance.timeOrigin 始终为 0performance.now() 将始终等于 Date.now(),在 Worker 内提供一致的时间流逝视图。

EventTarget and Event

EventTargetEvent API 允许对象发布和订阅事件。

AbortController and AbortSignal

AbortControllerAbortSignal API 提供了取消异步操作的通用模型。

Fetch 全局对象

  • fetch()
    • 开始从网络获取资源的过程。请参阅 Fetch API

Encoding API

TextEncoderTextDecoder 均支持 UTF-8 编码/解码。

请参阅 MDN 文档了解更多信息

TextEncoderStreamTextDecoderStream 类也可用。


URL API

URL API 支持符合 HTTP 和 HTTPS 方案的 URL。

请参阅 MDN 文档了解更多信息


Compression Streams

CompressionStreamDecompressionStream 类支持 deflate、deflate-raw 和 gzip 压缩方法。

请参阅 MDN 文档了解更多信息


URLPattern API

URLPattern API 提供基于便捷模式语法匹配 URL 的机制。

请参阅 MDN 文档了解更多信息


Intl

Intl API 允许您将日期、时间、数字等格式化为所提供区域设置(语言和地区)使用的格式。

请参阅 MDN 文档了解更多信息


设置 global_navigator 兼容性标志后,navigator.userAgent 属性可用,值为 'Cloudflare-Workers'。例如,可用于可靠地确定代码是否在 Workers 环境中运行。

未处理的 Promise 拒绝

当 JavaScript Promise 被拒绝且未附加 rejection 处理程序时,全局作用域会发出 unhandledrejection 事件。

当 JavaScript Promise 的 rejection 被延迟处理(在 unhandledrejection 事件已发出之后,才向 Promise 附加 rejection 处理程序)时,全局作用域会发出 rejectionhandled 事件。

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

设置 global_navigator 兼容性标志后,navigator.sendBeacon(...) API 可用于向 Web 服务器发送包含少量数据的 HTTP POST 请求。此 API 旨在作为尽力而为(best-effort)异步传输分析或诊断信息的手段。

例如,您可以将:

const promise = fetch("https://example.com", {
	method: "POST",
	body: "hello world",
});
ctx.waitUntil(promise);

替换为 navigator.sendBeacon(...)

navigator.sendBeacon("https://example.com", "hello world");

Web File System Access API

设置 enable_web_file_system 兼容性标志后,Workers 支持 Web File System Access API,允许您在 Worker 环境内的虚拟文件系统中读写文件和目录。此 API 提供对与 node:fs 模块 相同的内存虚拟文件系统的访问,但无需启用 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 });
	},
};

请参阅 MDN 文档 了解如何使用此 API,并参阅 node:fs 文档 了解虚拟文件系统结构和限制。

这篇文档对您有帮助吗?