mirror of
https://github.com/kataras/iris.git
synced 2026-01-05 19:27:05 +00:00
create a new package, name it as hero, I was thinking super or superb but hero is better name for what it does - the goal is to split the new 'mvc handlers' from the mvc system because they are not the same, users should know that they can use these type of rich binded handlers without controllers as well, like a normal handler and that I implemented here, the old files exist on the mvc package but will be removed at the next commit, I have to decide if we want type aliases for Result or no
Former-commit-id: cb775edc72bedc88aeab4c5a6de6bfc6bd56fae2
This commit is contained in:
26
_examples/http_responsewriter/herotemplate/README.md
Normal file
26
_examples/http_responsewriter/herotemplate/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Hero Template Example
|
||||
|
||||
This folder contains the iris version of the original hero's example: https://github.com/shiyanhui/hero/tree/master/examples/app.
|
||||
|
||||
Iris is 100% compatible with `net/http` so you don't have to change anything else
|
||||
except the handler input from the original example.
|
||||
|
||||
The only inline handler's changes were:
|
||||
|
||||
From:
|
||||
|
||||
```go
|
||||
if _, err := w.Write(buffer.Bytes()); err != nil {
|
||||
// and
|
||||
template.UserListToWriter(userList, w)
|
||||
```
|
||||
To:
|
||||
```go
|
||||
if _, err := ctx.Write(buffer.Bytes()); err != nil {
|
||||
// and
|
||||
template.UserListToWriter(userList, ctx)
|
||||
```
|
||||
|
||||
So easy.
|
||||
|
||||
Read more at: https://github.com/shiyanhui/hero
|
||||
55
_examples/http_responsewriter/herotemplate/app.go
Normal file
55
_examples/http_responsewriter/herotemplate/app.go
Normal file
@@ -0,0 +1,55 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"log"
|
||||
|
||||
"github.com/kataras/iris/_examples/http_responsewriter/herotemplate/template"
|
||||
|
||||
"github.com/kataras/iris"
|
||||
)
|
||||
|
||||
// $ go get -u github.com/shiyanhui/hero/hero
|
||||
// $ go run app.go
|
||||
//
|
||||
// Read more at https://github.com/shiyanhui/hero/hero
|
||||
func main() {
|
||||
|
||||
app := iris.New()
|
||||
|
||||
app.Get("/users", func(ctx iris.Context) {
|
||||
var userList = []string{
|
||||
"Alice",
|
||||
"Bob",
|
||||
"Tom",
|
||||
}
|
||||
|
||||
// Had better use buffer sync.Pool.
|
||||
// Hero exports GetBuffer and PutBuffer for this.
|
||||
//
|
||||
// buffer := hero.GetBuffer()
|
||||
// defer hero.PutBuffer(buffer)
|
||||
buffer := new(bytes.Buffer)
|
||||
template.UserList(userList, buffer)
|
||||
|
||||
if _, err := ctx.Write(buffer.Bytes()); err != nil {
|
||||
log.Printf("ERR: %s\n", err)
|
||||
}
|
||||
})
|
||||
|
||||
app.Get("/users2", func(ctx iris.Context) {
|
||||
var userList = []string{
|
||||
"Alice",
|
||||
"Bob",
|
||||
"Tom",
|
||||
}
|
||||
|
||||
// using an io.Writer for automatic buffer management (i.e. hero built-in buffer pool),
|
||||
// iris context implements the io.Writer by its ResponseWriter
|
||||
// which is an enhanced version of the standard http.ResponseWriter
|
||||
// but still 100% compatible.
|
||||
template.UserListToWriter(userList, ctx)
|
||||
})
|
||||
|
||||
app.Run(iris.Addr(":8080"))
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<%@ body { %>
|
||||
<% } %>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
// Code generated by hero.
|
||||
// DO NOT EDIT!
|
||||
package template
|
||||
@@ -0,0 +1,3 @@
|
||||
<li>
|
||||
<%= user %>
|
||||
</li>
|
||||
@@ -0,0 +1,3 @@
|
||||
// Code generated by hero.
|
||||
// DO NOT EDIT!
|
||||
package template
|
||||
@@ -0,0 +1,11 @@
|
||||
<%: func UserList(userList []string, buffer *bytes.Buffer) %>
|
||||
|
||||
<%~ "index.html" %>
|
||||
|
||||
<%@ body { %>
|
||||
<% for _, user := range userList { %>
|
||||
<ul>
|
||||
<%+ "user.html" %>
|
||||
</ul>
|
||||
<% } %>
|
||||
<% } %>
|
||||
@@ -0,0 +1,41 @@
|
||||
// Code generated by hero.
|
||||
// DO NOT EDIT!
|
||||
package template
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
|
||||
"github.com/shiyanhui/hero"
|
||||
)
|
||||
|
||||
func UserList(userList []string, buffer *bytes.Buffer) {
|
||||
buffer.WriteString(`<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
`)
|
||||
for _, user := range userList {
|
||||
buffer.WriteString(`
|
||||
<ul>
|
||||
`)
|
||||
buffer.WriteString(`<li>
|
||||
`)
|
||||
hero.EscapeHTML(user, buffer)
|
||||
buffer.WriteString(`
|
||||
</li>
|
||||
`)
|
||||
|
||||
buffer.WriteString(`
|
||||
</ul>
|
||||
`)
|
||||
}
|
||||
|
||||
buffer.WriteString(`
|
||||
</body>
|
||||
</html>
|
||||
`)
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
<%: func UserListToWriter(userList []string, w io.Writer) (int, error)%>
|
||||
|
||||
<%~ "index.html" %>
|
||||
|
||||
<%@ body { %>
|
||||
<% for _, user := range userList { %>
|
||||
<ul>
|
||||
<%+ "user.html" %>
|
||||
</ul>
|
||||
<% } %>
|
||||
<% } %>
|
||||
@@ -0,0 +1,44 @@
|
||||
// Code generated by hero.
|
||||
// DO NOT EDIT!
|
||||
package template
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
"github.com/shiyanhui/hero"
|
||||
)
|
||||
|
||||
func UserListToWriter(userList []string, w io.Writer) (int, error) {
|
||||
_buffer := hero.GetBuffer()
|
||||
defer hero.PutBuffer(_buffer)
|
||||
_buffer.WriteString(`<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
`)
|
||||
for _, user := range userList {
|
||||
_buffer.WriteString(`
|
||||
<ul>
|
||||
`)
|
||||
_buffer.WriteString(`<li>
|
||||
`)
|
||||
hero.EscapeHTML(user, _buffer)
|
||||
_buffer.WriteString(`
|
||||
</li>
|
||||
`)
|
||||
|
||||
_buffer.WriteString(`
|
||||
</ul>
|
||||
`)
|
||||
}
|
||||
|
||||
_buffer.WriteString(`
|
||||
</body>
|
||||
</html>
|
||||
`)
|
||||
return w.Write(_buffer.Bytes())
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user