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


+ 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


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


* 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) 



* 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/



+ 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



Further reading



comments powered by Disqus