https://github.com/code-raisan/go-wasm-nodejs
NodeJSからGolangでWebAssemblyビルドした関数を呼び出すサンプル
https://github.com/code-raisan/go-wasm-nodejs
golang golang-wasm nodejs wasm webassembly
Last synced: about 2 months ago
JSON representation
NodeJSからGolangでWebAssemblyビルドした関数を呼び出すサンプル
- Host: GitHub
- URL: https://github.com/code-raisan/go-wasm-nodejs
- Owner: code-raisan
- License: mit
- Created: 2022-06-26T15:06:53.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2022-06-26T16:22:47.000Z (almost 4 years ago)
- Last Synced: 2025-03-16T21:15:10.876Z (about 1 year ago)
- Topics: golang, golang-wasm, nodejs, wasm, webassembly
- Language: JavaScript
- Homepage:
- Size: 10.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Go-WASM NodeJS
NodeJSからGolangでWebAssemblyビルドした関数を呼び出すサンプルになります。
## About
Rustみたいに素直ではないGolangのWebAssemblyをなんとかしようとして、結局TSに移植する過程で負けたコードです。
デッドロックとかデッドロックとかデッドロックとかデッドロックとかに随分と時間を吸われてなんとか動くまでになったものです。
NodeJSから [jiro4989/ojosama](https://github.com/jiro4989/ojosama) を動作させるためにせっかくだしWebAssemblyで動かしたら速度改善も望めて
JSとの親和性も高くなるんじゃねと思い作っていたので中身の動作は、[jiro4989/ojosama](https://github.com/jiro4989/ojosama) となります
*`wasm_exec_node.js`と`wasm_exec.js`は公式が提供しているものを使用しています。*
*また`wasm_exec.js`はGoのWebAssemblyが特殊なためそのために必要となるものです。SDK的な何かだと思ってます(多分違うけど)*
## Run
> *Go 1.18.3*を使用してビルドしています
> *NodeJS v16.14.2*を使用して実行します
### 1. `main.go` をWASMでビルドします
```bash
# Windows (Power Shell 7.x)
$env:GOOS="js"
$env:GOARCH="wasm"
go build -o main.wasm .
# Linux
GOOS=js
GOARCH=wasm
go build -o main.wasm *.go
```
### 2. 実行
```bash
node ./wasm_exec_node.js ./main.wasm
# Result
[LOG] WebAssembly Initialized
[LOG] Converting
RESULT: おハーブですわ!
```
## License
ライセンスの所在はいまいちわからないので、すべて自分で書いた`main.go`はMITライセンスにしておきます。
[jiro4989/ojosama](https://github.com/jiro4989/ojosama) は読み込んでるだけだからここに書く必要があるのかはよくわからないが、[jiro4989/ojosama](https://github.com/jiro4989/ojosama)のライセンスに従います。
`wasm_exec_node.js`と`wasm_exec.js`は公式がBSDで提供してるんでまあって感じで
自由に使ってください(使い道あるか知らないけど、あったらスターください....)