{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你这混蛋
Zstandard用于浏览器,Node.js和Deno. 现在只支持简单的API.
安装
npm install @bokuweb/zstd-wasm
实例
节点.js
播放场 : https://runkit.com/bokuweb/60f1172a58aae5001aea2418 (中文(简体) )
const { init, compress, decompress } = require('@bokuweb/zstd-wasm');
(async () => {
await init();
const compressed = compress(Buffer.from('Hello zstd!!'), 10);
const res = decompress(compressed);
Buffer.from(res).toString(); // Hello zstd!!
})();
德诺
另见:, https://github.com/bokuweb/zstd-wasm/tree/master/examples/deno 页面存档备份,存于互联网档案馆
import { init, decompress, compress } from 'https://deno.land/x/zstd_wasm/deno/zstd.ts';
await init();
const encoder = new TextEncoder();
const buffer = encoder.encode('Hello World');
const compressed = compress(buffer, 10);
const decompressed = decompress(compressed);
const decoder = new TextDecoder();
console.log(decoder.decode(decompressed));
没有捆绑器
import { init, compress, decompress } from '@bokuweb/zstd-wasm';
(async () => {
await init('./zstd.wasm'); // Please deploy `node_modules/@bokuweb/zstd-wasm/lib/wasm/zstd.wasm` to your hosting server.
const compressed = compress(Buffer.from('Hello zstd!!'), 10);
const res = decompress(compressed);
Buffer.from(res).toString(); // Hello zstd!!
})();
与 vite
请在配置后设置 vite.config.js。 。 。 .
import { defineConfig } from 'vite';
export default defineConfig({
optimizeDeps: {
exclude: ['@bokuweb/zstd-wasm'],
esbuildOptions: {
target: 'es2020',
},
},
});
有网络包4
我们需要使用 file-loader 与网络包装4.
因为网络包装与Emscripten创建的原子弹模块效果不佳.
看到没, https://github.com/webpack/webpack/issues/7352 互联网档案馆的存檔,存档日期2013-12-02
import { init, compress, decompress } from '@bokuweb/zstd-wasm';
(async () => {
await init();
const compressed = compress(Buffer.from('Hello zstd!!'), 10);
const res = decompress(compressed);
Buffer.from(res).toString(); // Hello zstd!!
})();
在这种情况下,请安装 file-loader 一个人.
- 网络包装. config.js
{
// ...snipped
module: {
rules: [
{
test: /zstd\.wasm$/,
type: 'javascript/auto',
loader: 'file-loader', // Please use file loader
},
],
},
}
带有网络包装5
我们需要使用 Asset Modules 和网络包装5.
因为网络包装与Emscripten创建的原子弹模块效果不佳.
看到没, https://github.com/webpack/webpack/issues/7352 互联网档案馆的存檔,存档日期2013-12-02
import { init, compress, decompress } from '@bokuweb/zstd-wasm';
(async () => {
await init();
const compressed = compress(Buffer.from('Hello zstd!!'), 10);
const res = decompress(compressed);
Buffer.from(res).toString(); // Hello zstd!!
})();
- 网络包装. config.js
{
// ...snipped
module: {
rules: [
{
test: /zstd\.wasm/,
type: 'asset/resource',
},
],
},
// ...snipped
}
使用词典
- 创建词典
zstd --train FullPathToTrainingSet/* -o dictionaryName
- 用字典压缩
const dict = readFileSync('./dict');
const compressed = compressUsingDict(createCCtx(), buffer, dict, 10);
- 用字典解压
const dict = readFileSync('./dict');
const decompressed = decompressUsingDict(createDCtx(), buffer, dict);
另见 实例
API 密码
async init( path: string): 保证
初始化模块 .
请指定路径 zstd.wasm 浏览器上没有bunders.
压缩( 缓冲: Uint8Array, 压缩级? 数): Uint8Array
- 缓冲:要压缩的数据.
- 压缩级别:(可选)压缩级别,默认值为3
示例
const compressed = compress(buffer, 10);
解压( 缓冲: Uint8Array): Uint8Array
- 缓冲:要解压的数据.
示例
const decompressed = decompress(buffer);
压缩 UsingDict( cctx: 数字, 缓冲器: Uint8Array, dict: Uint8Array, 压缩级? 数字): Uint8Array
- cctx:用于压缩上下文的指针. 请创建 cctx 与
createCCtx。 。 。 . - 缓冲:要压缩的数据.
- dict:字典数据.
- 压缩级别:(可选)压缩级别,默认值为3
示例
const dict = readFileSync('./dict');
const compressed = compressUsingDict(createCCtx(), buffer, dict, 10);
创建CCtx (): 编号
- 创建用于压缩上下文的指针.
已解压UsingDict(dctx:数字;dict:Uint8Array):Uint8Array
- dctx:用来解压上下文的指针. 请创建 cctx 与
createDCtx。 。 。 . - 缓冲:要解压的数据.
- dict:字典数据.
示例
const dict = readFileSync('./dict');
const decompressed = decompressUsingDict(createDCtx(), buffer, dict);
创建 DCtx (): 编号
- 创建解压上下文的指针.
许可证
TypeScript胶由麻省理工学院许可提供,zstd由Facebook根据BSD 3-Clause许可提供.