Go Web Toolkits and Frameworks

Beego Framework

TL;DR. Sorry.

Revel Framework

* strongly opinionated - you may or may not like what it requires you to do

+ routing, filters, middleware, templates/views

+ nice development environment

- hard to step outside the Revel way

Traffic Framework

+ routing, filters, middleware, templates/views

- dependency on regexp-based routing: impaired performance

Gorilla Toolkit

+ fast routing

+ subrouter / tree capability is very good

- ‘context’ shares a common table of state

- ‘session’ uses ‘context’

- strictly compatible to net/http function signatures - sometimes this makes it inflexible

Martini

+ flexible routing: paths, path params, globs, regexes

+ grouping of routes

+ implements http.Handler, so can interwork with equavalent APIs

* dependency injection means flexible handler API

- relatively slow

Good video tutorials http://martini.codegangsta.io/ etc

https://github.com/go-martini/martini

Healthy community extensions https://github.com/martini-contrib

Go-TigerTonic

* primarily intended for RESTful services instead of webapps: no support for views/templates

+ input muxing: possibilities for multi-tenant, multi-hosting etc

+ metrics support

* fixed handler API: sensible, well-designed (but inflexible) 

https://github.com/rcrowley/go-tigertonic

Goji

* Like Sinatra, Flask. Unlike Rails, Django.

* Does not use reflection

+ nice context passing

+ like pat with with added context

+ quite similar to Gorilla mux but with better context handling

+ compatible with net/http interfaces. Especially http.Handler can interwork with web.Handler

+ emphasis on composability

+ can do subrouting, but it’s not immediately obvious

+ fast!

Goji.io http://goji.io/

https://github.com/zenazn/goji

Gocraft/Web

+ routing

+ contexts

+ middleware

+ high performance

* handler signatures embed and extend net/http

- wacky Go method expressions

- maybe too dependent on reflection - maybe not simple enough

https://developer.uservoice.com/blog/2013/12/12/why-i-wrote-gocraft-web/

https://github.com/gocraft/web

Further reading

http://codecondo.com/4-minimal-web-frameworks-go-golang/

http://www.ryanday.net/2013/12/17/go-web-framework/

 
comments powered by Disqus