Web程序集的二进制文件是否小于JavaScript / TypeScript包?

问题描述 投票:1回答:1

WASM提供了语言的编译目标,使它们能够被编译为可在浏览器内部执行。

当然,它目前缺少某些功能-例如从WASM直接进行DOM访问以及不使用JavaScript初始化二进制文件。

忽略这一点,今天的JavaScript满足了与浏览器兼容的编译目标的目标。但是,由于JavaScript本身是高级语言,因此输出时常会令人费解,并且输出的结果通常大于源代码本身。

假设在wasm中存在DOM访问的世界,将:

  • 不包括语言运行时,编译为WASM的JavaScript或TypeScript生成的二进制文件大小是否小于使用Webpack生成的等效JavaScript包?
  • 将分开共享和交付运行时吗?参见Java,SilverLight,Flash,Shockwave
webassembly
1个回答
0
投票

您可以想象,这不是一个可以肯定地回答的问题,但是,我可以使您更好地了解当前情况以及进展情况。

编译为WebAssembly模块的应用将具有以下组成部分:

  1. 应用逻辑本身
  2. ((可选)运行时]
  3. (可选)主机API集成

依次查看:

关于(1),WebAssembly模块是节省尺寸的二进制格式。因此,它比最小的JavaScript表示的等效逻辑更紧凑(即更小)。

Re:2,WebAssembly缺少通用的运行时功能,例如(堆)内存管理和垃圾收集器。因此,运行时通常与应用程序逻辑一起提供。在某些情况下(Rust),此运行时非常轻巧,而在其他情况下(Blazor),则非常繁重。由于新的WebAssembly功能(垃圾收集,模块缓存)和更好的编译技术(提前编译),我们可能会看到这些运行时的权重随时间显着下降。

Re:3,您已经确认,WebAssembly缺少DOM访问-实际上,它缺少任何形式的I / O。目前,您的“标准” WebAssembly工具会生成“绑定”,从而增加WebAssembly模块和一些JavaScript“胶合”代码的重量。随着诸如interface types proposal之类的倡议获得越来越多的关注,这种情况可能会随着时间而减少。

所以为您回答问题,是的,我确实认为wasm模块将来会比其等效模块更紧凑。我还认为运行时将单独交付并进行缓存,但更重要的是,它将大大减小大小。

© www.soinside.com 2019 - 2024. All rights reserved.