Skip to content

JS API 参考 ​

qzjs 提供一组 WinterTC 兼容的 JS API。下面列出的全局对象在任何跑在运行时里的 JS 中都能直接用(initial_script、消息处理器、qz_post_message 触发的代码),不用 require() 或 import。

架构 ​

API 分类 ​

API 按来源标准分三类。

WinterTC(WinterCG 标准) ​

qzjs 实现的 WinterCG 兼容 Web API 子集。

API全局对象
consoleconsole
performanceperformance
timerssetTimeout、setInterval、clearTimeout、clearInterval
EventTargetEventTarget、Event、CustomEvent、ErrorEvent
AbortControllerAbortController、AbortSignal、DOMException
URLURL、URLSearchParams、URLPattern
fetchfetch、Headers、Request、Response
cryptocrypto、crypto.subtle
streamsReadableStream、WritableStream、TransformStream
compressCompressionStream、DecompressionStream
TextEncoderTextEncoder、TextDecoder
Blob / File / FormDataBlob、File、FormData
structuredClonestructuredClone
MessageChannelMessageChannel、MessagePort
WorkerWorker
navigatornavigator

W3C API ​

WinterCG 核心之外的浏览器标准 API。

API全局对象
WebSocketWebSocket
BroadcastChannelBroadcastChannel
EventSourceEventSource
CacheStoragecaches、CacheStorage、Cache
Service Workernavigator.serviceWorker
localStoragelocalStorage、sessionStorage

qzjs 平台扩展(类 Node 风格) ​

qzjs 特有的 API,不属于任何 Web 标准。风格接近 Node.js,但不是 Node API (process、require、Buffer 缺席)。

API全局对象备注
fsqzjs.fs文件系统操作
storageqzjs.storage键值存储
serveserve()HTTP / WebSocket / gRPC 服务器
grpcgrpcgRPC 客户端 + 服务端(QZ_WITH_GRPC=ON)

标准合规性 ​

qzjs 目标是 WinterTC 兼容性 — 与 Cloudflare Workers、Deno 和其他服务端运行时使用的 Web API 子集相同。DOM 专用 API(document、window、HTMLElement)被有意排除。

不包含的内容 ​

以下浏览器 API 被明确排除:

  • DOM:document、window、HTMLElement、全局对象上的 addEventListener
  • CSS:CSSStyleSheet、getComputedStyle、CSSOM
  • 布局:requestAnimationFrame、IntersectionObserver、ResizeObserver
  • 媒体:WebRTC、AudioContext
  • 存储:indexedDB(用 qzjs.storage)

使用方式 ​

所有全局对象立即可用 — 无需导入:

js
// 核心 API
console.log('Hello from qzjs');
setTimeout(() => console.log('tick'), 1000);

// 带流式传输的 fetch
let response = await fetch('https://example.com/data.json');
let data = await response.json();

// crypto
let bytes = crypto.getRandomValues(new Uint8Array(32));
let hash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode('hello'));

// URL 解析
let url = new URL('https://example.com/path?key=value');
console.log(url.searchParams.get('key')); // "value"

// 文件系统(平台扩展)
let content = await qzjs.fs.read('/app/config.json');

// 存储(平台扩展)
await qzjs.storage.set('session_token', 'abc123');

MIT 许可证