https://github.com/rosbit/go-deno
An embeddable JavaScript/TypeScript engine by interacting with deno. 通过与deno交互实现的嵌入式JavaScript/TypeScript
https://github.com/rosbit/go-deno
deno embeddable golang javascript typescript
Last synced: 3 months ago
JSON representation
An embeddable JavaScript/TypeScript engine by interacting with deno. 通过与deno交互实现的嵌入式JavaScript/TypeScript
- Host: GitHub
- URL: https://github.com/rosbit/go-deno
- Owner: rosbit
- License: mit
- Created: 2022-08-13T01:10:52.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2022-08-13T01:32:26.000Z (over 3 years ago)
- Last Synced: 2025-01-16T00:24:45.975Z (about 1 year ago)
- Topics: deno, embeddable, golang, javascript, typescript
- Language: Go
- Homepage:
- Size: 8.79 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-deno, makes Deno be embedded easily
[Deno](https://github.com/denoland/deno) is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.
This package is intended to provide a wrapper to interact `Deno` with application written in golang.
With some helper functions, `go-deno` makes it simple to calle Deno from Golang, and `go-deno` can be
treated as an embeddable JavaScript/TypeScript.
### Install
The package is fully go-getable, So, just type
`go get github.com/rosbit/go-deno`
to install.
### Usage
Suppose there's a Javascript file named `a.js` like this:
```javascript
function add(a, b) {
return a+b
}
```
one can call the Javascript function `add()` in Go code like the following:
```go
package main
import (
"github.com/rosbit/go-deno"
"fmt"
)
var add func(int, int)int
func main() {
ctx, err := deno.NewDeno("/path/to/deno-exe/deno", "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.