Go WebAssembly 入门(二)

栏目: Go · 发布时间: 7年前

内容简介:系列文章编写main.go将main.go编译成lib.wasm

系列文章 Go WebAssembly 入门(一)

Getting Started

编写main.go

package main

import (
  "strconv"
  "syscall/js"
)
// 传入value1, value2, result三个元素的id,将value1+value2结果赋给result元素
func add(ids []js.Value) {
  // 根据id获取输入值
  value1 := js.Global().Get("document").Call("getElementById", ids[0].String()).Get("value").String()
  value2 := js.Global().Get("document").Call("getElementById", ids[1].String()).Get("value").String()
 
  int1, _ := strconv.Atoi(value1)
  int2, _ := strconv.Atoi(value2)
  // 将相加结果set给result元素
  js.Global().Get("document").Call("getElementById", ids[2].String()).Set("value", int1+int2)
}

// 添加监听事件
func registerCallbacks() {
  js.Global().Set("add", js.NewCallback(add))
}

func main() {
  c := make(chan struct{}, 0)
  println("Go WebAssembly Initialized!")
  registerCallbacks()

  <-c
}

将main.go编译成lib.wasm

GOOS=js GOARCH=wasm go build -o lib.wasm main.go

在index.html中调用lib.wasm

<html>
  <head>
    <meta charset="utf-8">
    <script src="wasm_exec.js"></script>
    <script>
      if (!WebAssembly.instantiateStreaming) { // polyfill
        WebAssembly.instantiateStreaming = async (resp, importObject) => {
          const source = await (await resp).arrayBuffer();
          return await WebAssembly.instantiate(source, importObject);
        };
      }

      const go = new Go();
      let mod, inst;
      WebAssembly.instantiateStreaming(fetch("lib.wasm"), go.importObject).then(async (result) => {
        mod = result.module;
        inst = result.instance;
        await go.run(inst)
      });
    </script>
  </head>
  <body>
    <input type="text" id="value1"/>
    <input type="text" id="value2"/>
    <button type="button" id="add" onClick="add('value1', 'value2', 'result');">add</button>
    <input type="text" id="result"/>
  </body>
</html>

打开server,在浏览器打开即可调用WebAssembly二进制文件执行。

go run server.go

示例代码GitHub

reference


以上所述就是小编给大家介绍的《Go WebAssembly 入门(二)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

注意力经济: 如何把大众的注意力变成生意

注意力经济: 如何把大众的注意力变成生意

吴修铭 / 中信出版集团股份有限公司 / 2018-4-1 / 69

编辑推荐 这本书由万维钢作序,并在《得到》日课中多次推荐!中文版未上市之前,中文前沿媒体就在力推这本书!关于注意力争夺战的历史和现在,作者给了权威的梳理和定位! 百年来,在争夺注意力的战场上,媒体、广告、商人、企业和大众成为博弈的主角。商人是如何在注意力争夺战中获利的?媒体是如何在改变报道形式的?广告是如何进化的?以及,营销是如何变得随处可见、无孔不入的呢?这本书讲述了令商人或企业从吸......一起来看看 《注意力经济: 如何把大众的注意力变成生意》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具