#brotli #web-worker #wasm-binary #brotli-decompressor #rust

brotli-dec-wasm

Brotli 压缩解压器,适用于浏览器和 Web Worker,使用 WASM,大小仍然很小(约 300KB)

2 个稳定版本

2.3.0 2024 年 4 月 19 日
2.0.1 2023 年 7 月 13 日

432WebAssembly

Download history • Rust 包仓库 115/week @ 2024-04-13 • Rust 包仓库 25/week @ 2024-04-20 • Rust 包仓库

每月 76 次下载

MIT/Apache

31KB
249

brotli-dec-wasm

npm npm unpacked size

Brotli 压缩解压器,适用于浏览器和 Web Worker,使用 WASM,大小仍然很小(约 300KB 200KB)

如果你在寻找压缩器,请参阅 替代方案

功能

使用方法

从 v2.0.0 版本开始,此包可以用作 brotli-wasm 的精确替换。您可以简单地在这两个之间切换:import brotli from 'brotli-wasm'import brotli from 'brotli-dec-wasm'

更详细的使用方法请参阅 brotli-wasm使用方法 部分。示例也可在 brotli-wasm:test/brotli.spec.ts 的单元测试中和 brotli-wasm:example 中的示例项目中找到。特别是,一个 TransformStream 示例可在 brotli-wasm:example/web-next-transformstream/app/utils.ts 中找到。

此外,我们导出了由 wasm-pack 生成的 JS API 和 WASM 二进制文件。在需要通过 URL 实例化 WASM 模块的情况下,它们可能很有用。请查看 example/webpack 中的 *.asset.* 文件以获取示例。

问题

webpack 5 中损坏

重大更改:由于 webpack 5 中 WebAssembly 默认未启用,并标记为实验性功能。您需要通过 'experiments.asyncWebAssembly: true'(基于异步模块)或 'experiments.syncWebAssembly: true'(类似于 webpack 4,已弃用)启用 WebAssembly 的一个实验。

对于旧代码,请设置 experiments.syncWebAssembly: true,对于新代码,请设置 experiments.asyncWebAssembly: true

实现

代码非常简单,它只是一个对crate brotli-decompressor的包装(除了crate brotli,尽管brotli依赖于brotli-decompressor)。

构建配置,如opt-level = "s",通过手动测试进行了微调,以使包尽可能小。

维护

该包至少在我自己的博客mylmoe中使用,该博客提供了一个页面用于在线(解)压缩Brotli

替代方案

  • brotli-wasm:Brotli的一个可靠压缩和解压缩器,支持通过wasm的node和浏览器。如果你需要压缩器,请使用它。由一个组织积极维护。

更多替代方案可在brotli-wasm替代方案部分找到。

一个令人惊讶的事情是,在google/brotli官方仓库的js文件夹中,有一个纯JavaScript解压缩器实现,其大小甚至比这个包略小。然而,它并未发布在NPM上。我不知道原因,并且从那时起,我不建议使用它。

安全

至少 >= v1.3.3

  • < v1.3.3:Rust依赖wee_alloc未维护且存在严重问题。使用版本>= 1.3.3,用wasm32目标上的默认Rust分配器替换它。

许可证

版权(C)myl7

SPDX-License-Identifier:MIT OR Apache-2.0

依赖

~4MB
~60K SLoC