Thanks for your interest in this project!
鉂わ笍 Matt
Translate idiomatic Go into concise Javascript that works in every browser. Use Go's type system and world-class tooling to build large web applications with confidence.
Visit mat.tm/joy to learn more about Joy.
Getting Started 聽聽聽聽路聽聽聽聽Examples 聽聽聽聽路聽聽聽聽Using the CLI
Contributing聽聽聽聽路聽聽聽聽FAQ聽聽聽聽路聽聽聽聽More Links
Joy API聽聽聽聽路聽聽聽聽DOM API (coming soon!)聽聽聽聽路聽聽聽聽Virtual DOM API (coming soon!)
Getting Started
1. Install Joy:
curl -sfL https://raw.githubusercontent.com/matthewmueller/joy/master/install.sh | sh
Note: you can also download from the releases tab.
2. Create a main.go
file with the following code:
package main
func main() {
println("hi world!")
}
3. Run the code in a real browser:
joy run main.go
4. See the compiled Javascript:
joy main.go
Examples
Visit https://mat.tm/joy/#examples or peruse the test suite.
Using the CLI
Compile Go into Javascript:
joy <main.go>
Compile and run the Go code in headless chrome:
joy run <main.go>
Build a development version of the code:
joy build --dev <main.go>...
Build a production version of the code (coming soon!):
joy build <main.go>...
Start a development server with livereload:
joy serve <main.go>...
Run
joy help
for additional details.
Contributing
So happy to hear you're interested in contributing! Here's a quick rundown of how to get setup:
Setup
-
Make sure you have the Go environment setup on your computer. There are quite a few better resources online on how to do that
-
go get -u -v github.com/matthewmueller/joy/...
to install the compiler from source -
go test -v
to run all the tests
Links and tips:
- https://astexplorer.net/: I've been using this to figure out how to build the JS tree
- http://goast.yuroyoro.net/ : Simple Go AST viewer
- https://github.com/estree/estree/blob/master/es5.md: Link to the ES3 AST format, this is implemented in syntax.go
- https://golang.org/ref/spec: You may need to refer to this to see what types are possible in Go's AST
- To run all tests:
go test -v
- To run individual tests:
go test -v -run Test/08
pretty.Println(ast)
will pretty print the JS AST (requires this package)ast.Print(nil, node)
will pretty print the Go AST
If you have any further questions, open an issue or reach out to me on twitter.
FAQ
Visit https://mat.tm/joy/#faq to view the FAQ.
More Links
- Run
joy help
to see what else Joy can do for you - Visit mat.tm/joy to read more about Joy's origins
- Chat with us in #joy-compiler on Slack at gophers.slack.com
- Star github.com/matthewmueller/joy to follow the development
- Follow twitter.com/mattmueller for project updates