Compile Go to JS in the browser (using GopherJS)
Based on GopherJS Playground
The motive for this project was to enable client-side compiling of Golang to JavaScript to run in the browser for LiveCodes.
UMD:
<!-- <script src="https://cdn.jsdelivr.net/npm/@live-codes/go2js/build/go2js.js"></script> -->
<script src="go2js.js"></script>
<script>
const code = `
package main
import ("syscall/js"
"fmt")
func main() {fmt.Println("Hello, from Go")
js.Global().Call("alert", "Hello, JavaScript")
println("Hello, JS console")}
`;
window.go2js
.format(code)
.then((formatted) => {
console.log(formatted);
// return window.go2js.compile(formatted, 'https://cdn.jsdelivr.net/npm/@live-codes/go2js/build/');
return window.go2js.compile(formatted);
})
.then(eval)
.catch(console.warn);
</script>
ESM:
import { compile, format } from 'https://cdn.jsdelivr.net/npm/@live-codes/go2js';
const code = `
package main
import ("syscall/js"
"fmt")
func main() {fmt.Println("Hello, from Go")
js.Global().Call("alert", "Hello, JavaScript")
println("Hello, JS console")}
`;
format(code)
.then((formatted) => {
console.log(formatted);
// return compile(formatted, 'https://cdn.jsdelivr.net/npm/@live-codes/go2js/build/');
return compile(formatted);
})
.then(eval)
.catch(console.warn);
Run npm start
to start a server (http://127.0.0.1:8080) and watch for changes.
Please do!
Feedback, ideas and pull requests are highly appreciated.
BSD 2-Clause "Simplified" License same as GopherJS lisence