gpt4 book ai didi

html - 我可以在浏览器中运行Go编译器吗?

转载 作者:行者123 更新时间:2023-12-01 21:13:03 28 4
gpt4 key购买 nike

我最近发现Go可以编译为WebAssembly。凉!
根据this Go文档,Go工具链本身是用Go编写的。
这让我想到,Go编译器可以在浏览器中运行吗?我可以创建一个通过上传按钮指定文件路径的网站(尽管不上传任何内容),可以编译Go项目并将可执行文件作为“下载”返回吗?
我正在寻找的最终结果是一个保存到磁盘的可执行文件,而不是让Go代码在浏览器中运行,但是我不需要上面的确切方案,只要这是最终结果即可。
如果可能,限制是什么(如果有)?
我看过的其他资源:

  • A compiler from Go to WASM on GitHub
  • Someone working on a game where entered Go code runs in the browser
  • 最佳答案

    可以,但是很难做到。
    您无法使用WebAssembly访问文件。相反,您需要用户在网页内放置一个文件夹,并使用File and Directory Entries API获取文件及其内容。
    但是真正的问题是将文件从JS传递到WASM,反之亦然。您还需要在编译器源代码中替换对Go标准库的所有调用,这些访问将访问对JS函数的调用的文件。这些功能需要直接访问WASM存储器。您将需要大量修改编译器。
    要下载二进制文件,可以创建一个Blob,使用 URL.createObjectURL() 获取指向该blob的URL,使用<a>.download = true创建一个.href = <the blob URL>元素,然后对其进行.click()
    性能可能比直接运行Go编译器差,但除此之外,它应该可以正常工作。

    关于html - 我可以在浏览器中运行Go编译器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62720303/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com