You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Package vert provides WebAssembly interop between Go and JS values.
Install
GOOS=js GOARCH=wasm go get github.com/norunners/vert
Examples
Hello World!
Below is a trivial string value interop.
package main
import"github.com/norunners/vert"funcmain() {
v:=vert.ValueOf("Hello World!")
// Use v as a JS value.s:=""v.AssignTo(&s)
// Use s as a Go value.
}
Structs & Objects
Go structs and JS objects interop seamlessly.
package main
import"github.com/norunners/vert"typeDatastruct {
Messagestring
}
funcmain() {
v:=vert.ValueOf(Data{
Message: "Hello World!",
})
// e.g. {"Message": "Hello World!"}d:=&Data{}
v.AssignTo(d)
}
Tagged Struct Fields
Tagged struct fields allow defined JS field names.
package main
import"github.com/norunners/vert"typeDatastruct {
Messagestring`js:"msg"`
}
funcmain() {
v:=vert.ValueOf(Data{
Message: "Hello World!",
})
// The defined JS tag names the field.// e.g. {"msg": "Hello World!"}d:=&Data{}
v.AssignTo(d)
}
Package syscall/js, of the Go standard library, has limited interop support between Go and JS values.
The function js.ValueOf will not accept struct types. The result panics with ValueOf: invalid value.
The type js.Value. does not support an Interface or assignment method for non-basic Go values.
However, the methods Bool, Int, Float and String support basic Go values.
Package vert leverages and extends syscall/js to accommodate these shortcomings.