2 个稳定版本
2.3.0 | 2024 年 4 月 19 日 |
---|---|
2.0.1 | 2023 年 7 月 13 日 |
432 在 WebAssembly 中
每月 76 次下载
31KB
249 行
brotli-dec-wasm
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