使用Assemblyscript将类从WebAssembly导出到JavaScript?

时间:2019-06-11 12:11:53

标签: typescript webassembly assemblyscript

我正在尝试使用Assemblyscript将TypeScript编译为WebAssembly,并且尝试从WebAssembly导出类,以便可以在JavaScript中使用它。要澄清的是,即使该类是在.wasm中定义的,我也希望能够在.js文件中构造该类的新实例。

我已经做过一些研究和实验,似乎Assemblyscript会将类方法导出为函数,而不是整体导出类。

这就是我希望它在WebAssembly方面显示的方式:

view

这就是我想在JavaScript方面完成的事情:

<div class="container">
    <label for="name" class="form-group"><b>Nome</b>: {{ $movs->nameCoop }}</label><br>
    <label for="name"><b>Numero</b>: {{ $movs->numCoop }}</label><br>
    <label for="name"><b>CPF</b>: {{ $movs->cpfCoop }}</label><br>
    <label for="name"><b>Cadastro</b>: {{ $movs->dtCad }}</label><br>
    <label for="name"><b>Demissão</b>: {{ $movs->dtDem }}</label><br>
    <label for="name"><b>Observações</b>: {{ $movs->description }}</label><br>
    <label for="name"><b>Subscritas</b>: {{ $movs->subscritas }}</label><br>
    <label for="name"><b>A integralizar</b>: {{ $movs->aintegralizar }}</label><br>
    <label for="name"><b>Integralizadas</b>: {{ $movs->integralizadas }}</label><br>
    <label for="name"><b>Status</b>: {{ $movs->status }}</label><br>
            <td>
                <form action="/trans" method="POST">
                    @csrf
                    <div class="input-group">
                      <input type="hidden" class="form-control" name="r" value={{$cooperado->id}}>
                        <button type="submit" class="btn btn-primary">
                          <span>+</span>
                        </button>
                      </span>
                    </div>
                </form>
    </td>
    <td>
                <form action="/mvs" method="POST">
                    @csrf
                    <div class="input-group">
                      <input type="hidden" class="form-control" name="v" value={{$cooperado->id}}>
                        <button type="submit" class="btn btn-primary">
                          <span>ver mvs</span>
                        </button>
                      </span>
                    </div>
                </form>
    </td>

所以我想知道是否有人知道一种实现此(或至少类似)功能的方法?

2 个答案:

答案 0 :(得分:1)

我设法找到一种解决方案,并认为应该在此处发布。 AssemblyScript的主要作者(至少我是这样认为的)已经编写了一个加载器,该加载器是我最初没有找到的项目的一部分。

可以在这里找到: https://github.com/AssemblyScript/assemblyscript/tree/master/lib/loader

此处提供有关如何使用它将类从Wasm导出到JavaScript的简短指南: https://github.com/AssemblyScript/docs/blob/master/basics/loader.md

答案 1 :(得分:0)

WebAssembly有一个非常基本的类型系统,它只有四个数字类型。为了将最基本的类型(例如字符串)编译为WebAssembly,都需要创建很多“胶水代码”(对于字符串,数据是通过线性内存交换的)。

要实现您所描述的内容是可能的,但需要创建AssemblyScript当前能够生成的更多“胶水代码”。