~repos /gromer
git clone https://pyrossh.dev/repos/gromer.git
gromer is a framework and cli to build multipage web apps in golang using htmx and alpinejs.
81f39a0d
—
Peter John 3 years ago
Update readme.md
readme.md
CHANGED
|
@@ -21,7 +21,7 @@ go get -u -v github.com/pyros2097/gromer/cmd/gromer
|
|
|
21
21
|
|
|
22
22
|
# Using
|
|
23
23
|
|
|
24
|
-
You need to follow this directory structure similar to nextjs for the api route handlers to be generated
|
|
24
|
+
You need to follow this directory structure similar to nextjs for the api route handlers to be generated and run the gromer command.
|
|
25
25
|
|
|
26
26
|
[Example](https://github.com/pyros2097/gromer/tree/master/_example)
|
|
27
27
|
|
|
@@ -151,6 +151,77 @@ func POST(ctx context.Context, b PostParams) (*services.Todo, int, error) {
|
|
|
151
151
|
}
|
|
152
152
|
```
|
|
153
153
|
|
|
154
|
+
And then run the gromer cli command annd it will generate the route handlers in a main.go file,
|
|
155
|
+
```go
|
|
156
|
+
And it will generate your route handlers in the main.go file,
|
|
157
|
+
```go
|
|
158
|
+
// Code generated by gromer. DO NOT EDIT.
|
|
159
|
+
package main
|
|
160
|
+
|
|
161
|
+
import (
|
|
162
|
+
"os"
|
|
163
|
+
|
|
164
|
+
"github.com/gorilla/mux"
|
|
165
|
+
"github.com/pyros2097/gromer"
|
|
166
|
+
"github.com/rs/zerolog/log"
|
|
167
|
+
"gocloud.dev/server"
|
|
168
|
+
|
|
169
|
+
"github.com/pyros2097/gromer/_example/assets"
|
|
170
|
+
"github.com/pyros2097/gromer/_example/components"
|
|
171
|
+
"github.com/pyros2097/gromer/_example/pages/404"
|
|
172
|
+
"github.com/pyros2097/gromer/_example/pages"
|
|
173
|
+
"github.com/pyros2097/gromer/_example/pages/about"
|
|
174
|
+
"github.com/pyros2097/gromer/_example/pages/api/recover"
|
|
175
|
+
"github.com/pyros2097/gromer/_example/pages/api/todos"
|
|
176
|
+
"github.com/pyros2097/gromer/_example/pages/api/todos/_todoId_"
|
|
177
|
+
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
func init() {
|
|
181
|
+
gromer.RegisterComponent(components.Header)
|
|
182
|
+
gromer.RegisterComponent(components.Page)
|
|
183
|
+
gromer.RegisterComponent(components.Todo)
|
|
184
|
+
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
func main() {
|
|
188
|
+
port := os.Getenv("PORT")
|
|
189
|
+
baseRouter := mux.NewRouter()
|
|
190
|
+
baseRouter.Use(gromer.LogMiddleware)
|
|
191
|
+
|
|
192
|
+
baseRouter.NotFoundHandler = gromer.StatusHandler(not_found_404.GET)
|
|
193
|
+
|
|
194
|
+
staticRouter := baseRouter.NewRoute().Subrouter()
|
|
195
|
+
staticRouter.Use(gromer.CacheMiddleware)
|
|
196
|
+
gromer.StaticRoute(staticRouter, "/assets/", assets.FS)
|
|
197
|
+
gromer.StylesRoute(staticRouter, "/styles.css")
|
|
198
|
+
|
|
199
|
+
pageRouter := baseRouter.NewRoute().Subrouter()
|
|
200
|
+
gromer.ApiExplorerRoute(pageRouter, "/explorer")
|
|
201
|
+
gromer.Handle(pageRouter, "GET", "/", pages.GET)
|
|
202
|
+
gromer.Handle(pageRouter, "GET", "/about", about.GET)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
apiRouter := baseRouter.NewRoute().Subrouter()
|
|
206
|
+
apiRouter.Use(gromer.CorsMiddleware)
|
|
207
|
+
gromer.Handle(apiRouter, "GET", "/api/recover", recover.GET)
|
|
208
|
+
gromer.Handle(apiRouter, "GET", "/api/todos", todos.GET)
|
|
209
|
+
gromer.Handle(apiRouter, "POST", "/api/todos", todos.POST)
|
|
210
|
+
gromer.Handle(apiRouter, "DELETE", "/api/todos/{todoId}", todos_todoId_.DELETE)
|
|
211
|
+
gromer.Handle(apiRouter, "GET", "/api/todos/{todoId}", todos_todoId_.GET)
|
|
212
|
+
gromer.Handle(apiRouter, "PUT", "/api/todos/{todoId}", todos_todoId_.PUT)
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
log.Info().Msg("http server listening on http://localhost:"+port)
|
|
217
|
+
srv := server.New(baseRouter, nil)
|
|
218
|
+
if err := srv.ListenAndServe(":"+port); err != nil {
|
|
219
|
+
log.Fatal().Stack().Err(err).Msg("failed to listen")
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
```
|
|
224
|
+
|
|
154
225
|
# Templating
|
|
155
226
|
|
|
156
227
|
Gromer uses a handlebars like templating language for components and pages. This is a modified version of this package [velvet](https://github.com/gobuffalo/velvet)
|