Skip to content
/ go-qjs Public

An embeddable JavaScript engine by interacting with QuickJS. 通过与QuickJS交互实现的嵌入式JavaScript

License

Notifications You must be signed in to change notification settings

rosbit/go-qjs

Repository files navigation

go-qjs, makes QuickJS be embedded easily

QuickJS is a small and embeddable Javascript engine written by Fabrice Bellard.

This package is intended to provide a wrapper to interact QuickJS with application written in golang. With some helper functions, go-qjs makes it simple to calle QuickJS from Golang, and go-qjs can be treated as an embeddable JavaScript.

Install

The package is fully go-getable, So, just type

go get github.com/rosbit/go-qjs

to install.

Usage

Suppose there's a Javascript file named a.js like this:

function add(a, b) {
    return a+b
}

one can call the Javascript function add() in Go code like the following:

package main

import (
  "github.com/rosbit/go-qjs"
  "fmt"
)

var add func(int, int)int

func main() {
  ctx, err := qjs.NewQuickJS("/path/to/quickjs-exe/qjs", "a.js")
  if err != nil {
     fmt.Printf("%v\n", err)
     return
  }
  defer ctx.Quit()

  // method 1: bind JS function with a golang var
  if err := ctx.BindFunc("add", &add); err != nil {
     fmt.Printf("%v\n", err)
     return
  }
  res := add(1, 2)

  // method 2: call JS function using Call
  res, err := ctx.CallFunc("add", 1, 2)
  if err != nil {
     fmt.Printf("%v\n", err)
     return
  }

  fmt.Println("result is:", res)
}

Status

The package is not fully tested, so be careful.

Contribution

Pull requests are welcome! Also, if you want to discuss something send a pull request with proposal and changes.

Convention: fork the repository and make changes on your fork in a feature branch.

About

An embeddable JavaScript engine by interacting with QuickJS. 通过与QuickJS交互实现的嵌入式JavaScript

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages