4 ms·
Ask HN: What's the golang web framework with the most momentum?
- phasevar 14y agoBased on Github stars... Web.go (875 stars) https://github.com/hoisie/web https://github.com/hoisie/web Revel (742 stars) https://github.com/robfig/revel https://github.com/robfig/revel Beego (264 stars) https://github.com/astaxie/beego https://github.com/astaxie/beego Falcore (224 stars) https://github.com/ngmoco/falcore https://github.com/ngmoco/falcore Mango (160 stars) https://github.com/paulbellamy/mango https://github.com/paulbellamy/mango Golanger (159 stars) https://github.com/golangers/framework https://github.com/golangers/framework
- jemeshsu 14y agoWeb.go got the most stars because its the first one, and is available before Go 1.0. Revel is modelled after Play and Beego is modelled after Tornido. I feel Revel could be more Go idiomatic. Beego is a light layer on top of the standard Go HTTP library and I like its abstraction better. Falcore is not the usual web framework, take a look and you will know why. Have not read much into Mango & Golanger. There is no Rails or Django in Go world yet. Some people just use web libraries such as https://github.com/gorilla https://github.com/gorilla to assemble a web app.
- carbocation 14y agoThis is helpful, thanks! Some of those projects (e.g., web.go) are much older than others (e.g., revel, beego), so it appears that some of the younger frameworks there have accumulated their stars pretty quickly. This prompted me to suggest to github that they add graphs of stars over time.
- bradrydzewski 14y agoI'd like to add a few more options. First there is pat, by the Heroku / the guy that created Sinatra: https://github.com/bmizerany/pat https://github.com/bmizerany/pat if you need simple routing and REST url parameters this is a great library to use. I've found it outperforms many of the other routing libraries. The best part is that it (mostly) uses the standard net.http library and you don't need to code against custom APIs. there is also Gorilla Web Toolkit: http://www.gorillatoolkit.org/ http://www.gorillatoolkit.org/ this library has been around for a couple years, and is often recommended on the Go mailing list. It recently switched from Google Code to Github, so it doesn't have as many stars as the others. It provides routing, secure cookies, sessions, and more. I personally would start with Gorilla or Pat, because they are very thin layers on top of the standard net.http library with little abstraction ... in many cases the standard library works great. If you end up needing a higher level framework you can always switch to something like Revel.
- rartichoke 14y agoNone of them are actually too good IMO. They are either super opinionated or don't remove the pain points in common web dev. Still waiting for something like Express in Go but I doubt it'll happen. I don't think anyone is serious about web development with Go based on what I see in the IRC channel and newsgroup on a daily basis, the lack of libs doesn't help either. Edit: I want to add that I attempted to step up and learn Go as I made a web lib similar to Express. I had a little success but most of the time the people on the IRC channel weren't very helpful. Most people didn't understand the need for such a lib (something like Express), it's just a bunch of people parroting "it's so easy in Go, you don't need a lib!" but these are people who never built a single web app in their entire life or going into attack mode saying anyone who needs a super light weight lib is some type of scrub developer. It made me instantly turn my shoulder to the Go community and it'll take some pretty good libs to make me change my mind because in the end getting stuff done is the only thing that matters and Go + reasonable web dev isn't close to solving that problem yet.
- bradrydzewski 14y agoI put together an experimental package based on express: https://github.com/drone/routes/tree/master/exp https://github.com/drone/routes/tree/master/exp
- rartichoke 14y agoYeah, I looked at that one for quite a bit. It still leaves a lot to be desired compared to Express but it was a good start. I thought the project was dead since it hasn't been updated in a while. I wasn't sure how to decouple the middleware functionality out of your lib so it could be applied to a different router.