示例
所有示例都在 examples/, 构建时做编译校验(-DQZ_BUILD_EXAMPLES=ON)。C 示例由 CMake 构建;JS 示例经 qzjs CLI 运行。每个示例目录都有 README.md,写明精确运行命令与期望输出。
示例请用 Release 构建运行。
QZ_BUILD_TESTS=ON的构建把核心链到mock_libuv,其空闲路径阻塞在固定 1 秒轮询兜底上,而非在定时器到期时刻 唤醒——定时器因此被量化到整秒。timers会打印出错误的耗时。 生产/Release 构建用真 libuv,不受影响。
构建
bash
cmake -B build -DCMAKE_BUILD_TYPE=Release -DQZ_BUILD_EXAMPLES=ON
cmake --build build --parallelC 示例(嵌入)
| 示例 | 演示内容 | 运行 |
|---|---|---|
hello | 最简嵌入:创建运行时、求值 JS、host↔JS 消息往返 | ./build/examples/hello/qz_hello |
messages | JSON 请求/响应状态机(echo/add/date) | ./build/examples/messages/qz_messages |
worker | new Worker(url) 并行执行 | ./build/examples/worker/qz_worker |
C 示例会派生 qzjs-rt(ISOLATED 进程模型);构建时自动注入运行时路径,开箱即用。
JS 示例(CLI)
| 示例 | 演示内容 | 运行 |
|---|---|---|
wasm | 执行 WebAssembly 模块(WebAssembly.instantiate) | ./build/qzjs examples/wasm/wasm.js |
crypto | WebCrypto:SHA-256 + AES-GCM 加解密 | ./build/qzjs examples/crypto/crypto.js |
httpserver | 纯 JS serve() HTTP 服务器 + 静态文件 | ./build/qzjs examples/httpserver/server.js |
websocket | 经 serve() ws 路由的 WebSocket echo 服务器 | ./build/qzjs examples/websocket/websocket.js |
timers | setTimeout/setInterval + Promise.all 异步 | ./build/qzjs examples/timers/timers.js |
fs | qzjs.fs 读/写/列目录/删除 | ./build/qzjs examples/fs/fs.js |
broadcast | BroadcastChannel 跨实例消息 | ./build/qzjs examples/broadcast/broadcast.js |
stream-pipeline | ReadableStream/TransformStream 流水线 | ./build/qzjs examples/stream-pipeline/pipeline.js |
fetch-proxy | 出站 fetch 代理 | ./build/qzjs examples/fetch-proxy/main.js |
grpc-hello | gRPC unary 服务器(-DQZ_WITH_GRPC=ON) | ./build/qzjs examples/grpc-hello/grpc-hello.js |
worker-orchestrate | 编排多个 worker | ./build/qzjs examples/worker-orchestrate/orchestrate.js |
C 扩展
| 示例 | 演示内容 | 运行 |
|---|---|---|
extension | 把 C 扩展编译进 qzjs,向 JS 暴露原生全局 | 见 extension/README.md |
扩展必须编译进 qzjs 库(-DQZ_EXTRA_SOURCES + -DQZ_EXTENSIONS + -DQZ_EXTRA_HEADERS);示例文档给出了精确构建命令。