GitHub - matthewmueller/joy: A delightful Go to Javascript compiler
source link: https://github.com/matthewmueller/joy
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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!)
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.
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
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK