在不使用Node.js的情况下,在JavaScript中使用lz4压缩技术

11

我正在尝试在纯JavaScript中使用LZ4解压缩。

我找到了这个JavaScript库,但它是用于Node.js的。 在同一个存储库中,我找到了一个,理论上可以在浏览器中使用。 问题是这个库仍然期望Node.js缓冲区,而我没有这些缓冲区,因为所有这些都发生在客户端(我在这里记录了一个错误here,以尝试获得如何使用它的一些指针)。

然后我寻找了一个Node.js缓冲区的移植,我找到了这个存储库。问题是当我在Chrome和Firefox中使用它时,我会收到以下错误:

TypeError:this is not a typed array

我为此记录了错误报告。 我觉得结合这两个库,我离在纯JavaScript中实现lz4解压缩并不远,但由于以前从未使用过ArrayBuffer,Uint8Array和Node.js,我很难连接这些点。

我的问题:是否有人成功地在纯JavaScript中管理LZ4解压缩? 任何建议或指针?提前致谢。

1个回答

7
我提供的是想法而非解决方案,你可以尝试这个仓库:https://code.google.com/p/lz4/,它有一个LZ4的纯C语言实现。你可以使用clang将其编译为LLVM位码,然后使用 https://github.com/kripken/emscripten 来将LLVM位码转换成JavaScript代码。这就像C语言到JavaScript的编译过程,听起来可能有些疯狂,但如果看看他们已经实现的东西……我不知道,它可能真的能行。你可以在这里看一下:https://github.com/kripken/emscripten/wiki,他们使用这个工具将许多东西移植到了JavaScript上,例如这个:https://github.com/kripken/lzma.js。

这可能是宇宙历史上最好的答案。 - jkh
1
Emscripten非常好且速度相当快。成本在于malloc、memcpy(来回)和free。请记住,它是一个堆模拟器。 - user1212212
Emscripten很棒,但只有当你精通C/C++时才能使用,因为你需要进行大量的编译后修改才能使代码变得合理可用/可读.. 不适合胆小者 - user257319

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接