我正在尝试使用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>
所以我想知道是否有人知道一种实现此(或至少类似)功能的方法?
答案 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当前能够生成的更多“胶水代码”。