https://github.com/akmittal/turbo-go
Build hotwire apps using go
https://github.com/akmittal/turbo-go
go-template golang hotwire hotwire-turbo
Last synced: 6 months ago
JSON representation
Build hotwire apps using go
- Host: GitHub
- URL: https://github.com/akmittal/turbo-go
- Owner: akmittal
- License: mit
- Created: 2021-02-05T11:04:48.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-02-08T06:01:36.000Z (over 5 years ago)
- Last Synced: 2024-06-19T04:24:58.599Z (about 2 years ago)
- Topics: go-template, golang, hotwire, hotwire-turbo
- Language: Go
- Homepage:
- Size: 14.6 KB
- Stars: 40
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
## Turbo-go
Build hotwire applications using Go
## Example
Examples are in [examples](http://github.com/akmittal/turbo-go/tree/master/examples) directory
## Install turbo-go
``` text
go get github.com/akmittal/turbo-go
```
## API
```github.com/akmittal/turbo-go/pkg/turbo```
Send single template update
``` go
messageTemp, err := template.New("message").parse(`
{{.}}`)
data := time.Now()
turbo := turbo.Turbo{
Action: turbo.APPEND, // Action can be UPDATE, APPEND, PREPEND, REPLACE, REMOVE
Template: messageTemp,
Target: "messages",
Data: data,
}
```
Send stream of templates
``` go
func main(){
// Create hub
hub := turbo.NewHub()
go hub.Run()
mux.Get("/socket", func(rw http.ResponseWriter, req *http.Request) {
getSocket(msgChan, hub, rw, req)
})
}
func getSocket(msgChan chan interface{}, hub *turbo.Hub, rw http.ResponseWriter, req *http.Request) {
temp, _ := template.ParseFiles("templates/messages.temp.html")
messageTemp := temp.Lookup("message")
appendMessage := turbo.Stream{
Action: turbo.APPEND,
Template: messageTemp,
Target: "messages",
Data: msgChan,
}
appendMessage.Stream(hub, rw, req)
}
```