Popularity
3.6
Growing
Activity
0.0
Stable
55
5
8

Programming language: Go
License: MIT License
Tags: WebAssembly    

vert alternatives and similar packages

Based on the "WebAssembly" category.
Alternatively, view vert alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of vert or a related project?

Add another 'WebAssembly' Package

README

vert

GoDoc Build Status

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"

func main() {
    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"

type Data struct {
    Message string
}

func main() {
    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"

type Data struct {
    Message string `js:"msg"`
}

func main() {
    v := vert.ValueOf(Data{
        Message: "Hello World!",
    })
    // The defined JS tag names the field.
    // e.g. {"msg": "Hello World!"}

    d := &Data{}
    v.AssignTo(d)
}

Error Handling

AssignTo returns an error value.

package main

import "github.com/norunners/vert"

type Data struct {
    Message string
}

func main() {
    v := vert.ValueOf("Hello World!")

    d := &Data{}
    if err := v.AssignTo(d); err != nil {
        // Handle error.
    }
}

Why?

Package syscall/js, of the Go standard library, has limited interop support between Go and JS values.

  1. The function js.ValueOf will not accept struct types. The result panics with ValueOf: invalid value.
  2. 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.

License

  • [MIT License](LICENSE)


*Note that all licence references and agreements mentioned in the vert README section above are relevant to that project's source code only.