@cratestack / cbor-web
一、 wasm-bindgen 构建的 cratestack-codec-cbor的 CborCodec 浏览器
CrateStack RPC客户端——浏览器的一半 @cratestack/cbor-node的
史诗(# 285)。与服务器和Rust客户端相同的Rust编码/解码逻辑
已经使用,可从浏览器JavaScript访问,无需重新实现cor
在打印稿。
安装
npm install @cratestack/cbor-web
使用
createCborCodec() 执行一次性WASM模块实例化和
解析为满足的普通对象 CratestackRpcCodec 从
@cratestack/ts-types. 每一个 encode/decode 召唤归来者
对象是同步的——异步代价是一次性支付的,而不是每次调用都支付:
import { createCborCodec } from "@cratestack/cbor-web";
const codec = await createCborCodec();
const bytes = codec.encode({ hello: "world" });
const value = codec.decode(bytes);
使用生成的CrateStack客户端
import { createCborCodec } from "@cratestack/cbor-web";
import { createClient } from "./generated/client.js";
const client = createClient({
baseUrl: "https://api.example.com",
codec: await createCborCodec(),
});
错误处理
错误的cor输入 decode,或一个值 encode 不能代表,
抛出一个可捕获的JS Error -从来没有一个WASM陷阱会毒害
模块用于后续调用(参见 crates/cratestack-cbor-wasm/src/wasm.rs
为什么这种区别很重要)。
打包机
船一 wasm-pack --target web 构建: .wasm 资产通过
new URL('cratestack_cbor_wasm_bg.wasm', import.meta.url),这是我想要的。
webpack 5和Next.js都是作为静态资源处理的,不需要额外的配置。
验证对 examples/embedded-browser-vite.
看到也
@cratestack/cbor-node- Node/native对应(napi-rs)。crates/cratestack-cbor-wasm-包裹包裹的包裹箱。crates/cratestack-codec-cbor-底层的,不变的Rust编解码器。
许可证
麻省理工学院