⚠️ Joy development is currently on hold. Recent Go -> WASM developments look like a more promising path to Go being a great choice for frontend development. I'm thrilled to see development moving so quickly now and I think our efforts are better spent improving the Go to WASM compiler. As for Joy, there are quite a few interesting nuggets of code in here that I'd encourage you to dig up, polish and open source 😊
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!)
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
Visit https://mat.tm/joy/#examples or peruse the test suite.
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.
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:
go test -v
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 ASTIf you have any further questions, open an issue or reach out to me on twitter.
Visit https://mat.tm/joy/#faq to view the FAQ.
joy help
to see what else Joy can do for you