【问题标题】:Using lz4 compression in javascript without Node.js在没有 Node.js 的 javascript 中使用 lz4 压缩
【发布时间】:2014-01-01 10:57:10
【问题描述】:

我正在尝试让 LZ4 解压缩以在纯 JavaScript 的客户端工作。

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

然后我寻找 Node.js 缓冲区的移植,并找到了这个 repository。问题是当我使用它时出现此错误 在 Chrome 和 Firefox 中:

TypeError: this is not a typed array

我为此记录了此bug 报告。 我觉得将这两个库结合起来我离在纯 JavaScript 中实现 lz4 解压缩不远了,但以前从未使用过 ArrayBuffer、Uint8Array 和 Node.js,我正在努力连接这些点。

我的问题: 有没有人成功地用纯 JavaScript 解压 LZ4?有什么建议或指示吗?提前致谢。

【问题讨论】:

    标签: javascript node.js compression lz4


    【解决方案1】:

    我会提供一个IDEA而不是解决方案,你可以试试这个仓库

    https://code.google.com/p/lz4/

    它有 LZ4 的纯 c 实现

    您可以使用 clang 将其编译为 llvm 位代码

    当你拥有它时,你使用这个https://github.com/kripken/emscripten

    从 llvm 位码中获取 javascript

    它就像 c 到 javascript 编译一样,听起来可能很疯狂,但如果你看看他们已经取得的成就......我不知道它是否真的可以工作。

    看看here 他们用这个工具把很多东西移植到了javascript 比如这个:https://github.com/kripken/lzma.js

    【讨论】:

    • 这很可能是宇宙历史上最好的答案。
    • Emscripten 很棒而且速度很快。费用在 malloc、memcpy(那里和后面)中,免费。请记住,它是一个堆模拟器。
    • emscripten 很棒,但前提是您精通 C/C++,因为您必须进行大量编译后修改才能使代码合理地可用/可读。不适用于胆小的人
    猜你喜欢
    • 2020-10-30
    • 2016-03-31
    • 2014-05-08
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    • 1970-01-01
    相关资源
    最近更新 更多