Re:Ask HN: What is the current state of web frameworks in Go...
by jeevatkm on Saturday July 14, 2018 @03:03PM
(#17531801)
You have written your experience in detail.
If you don't mind. I would like to request you to have a look aah framework [1]? and share your candid feedback. I'm interested in your viewpoint. I'm the author of aah.
https://vluxe.io/golang-router.html
However, Go ecosystem is starting to look interesting library-wise, as long as your project doesn't involve enterprise integration with legacy XML services or SOAP, because Go sucks at mostly anything XML.
For templating I use Jet because the standard templating library is too basic for professional use https://github.com/CloudyKit/jet .
I don't use ORM, I use https://github.com/Masterminds/squirrel for query building and https://github.com/jmoiron/sqlx which helps deals with row<=>struct conversion. For database migrations, I use https://github.com/rubenv/sql-migrate , but if you need an ORM gorm https://github.com/jinzhu/gorm is OK if you do code first and sqlboiler https://github.com/volatiletech/sqlboiler is OK if you do database first.
For session handling I use scs github.com/alexedwards/scs , for converting form encoded data to go structs I use github.com/gorilla/schema, for logging I use zap https://github.com/uber-go/zap. For managing roles in an app I use either the voter pattern https://symfony.com/doc/current/security/voters.html in simple cases or casbin github.com/casbin/casbin . For background jobs I used https://github.com/gocraft/work and https://github.com/gocelery/gocelery , for caching i just use redis https://github.com/go-redis/redis , for data validation I used https://github.com/asaskevich/govalidator or https://github.com/go-ozzo/ozzo-validation . For sending mails to customers I used https://github.com/go-gomail/gomail
If i need html forms, I first describe form elements as a struct then write form helpers in jet templating to display them like that:
Then I can just write an helper in jet to display the the form view: This is the exact app structure I use to deal with dependencies and filters :https://medium.com/statuscode/how-i-write-go-http-services-a...