|
|
|
@ -0,0 +1,28 @@ |
|
|
|
Goji |
|
|
|
==== |
|
|
|
|
|
|
|
Goji is a minimalistic web framework inspired by Sinatra. |
|
|
|
|
|
|
|
|
|
|
|
Philosophy |
|
|
|
---------- |
|
|
|
|
|
|
|
Most of the design decisions in Goji can be traced back to the fundamental |
|
|
|
philosopy that the Go standard library got things Mostly Right, and if it |
|
|
|
didn't, it at least is good enough that it's not worth fighting. |
|
|
|
|
|
|
|
Therefore, Goji leans heavily on the standard library, and in particular its |
|
|
|
interfaces and idioms. You can expect to be able to use most of Goji in exactly |
|
|
|
the manner you would use a comparable standard library function, and have it |
|
|
|
function in exactly the way you would expect. |
|
|
|
|
|
|
|
Also in this vein, Goji makes use of Go's `flag` package, and in particular the |
|
|
|
default global flag set. Third party packages that have global state and squat |
|
|
|
on global namespaces is something to be suspicious of, but the `flag` package is |
|
|
|
also the closest thing Go has to a unified configuration API, and when used |
|
|
|
tastefully it can make everyone's lives a bit easier. Wherever possible, the use |
|
|
|
of these flags is opt-out, at the cost of additional complexity for the user. |
|
|
|
|
|
|
|
Goji also makes an attempt to not be magical -- explicit is better than |
|
|
|
implicit. Goji does make use of reflection and `interface{}`, but only when an |
|
|
|
API would be impossible or cumbersome without it. |