mirror of
https://github.com/kataras/iris.git
synced 2025-03-15 03:56:27 +01:00
Update vendor for Pug (Jade) Parser and add Iris + Pug examples in the _examples/view folder, relative to https://github.com/kataras/iris/issues/1003
Former-commit-id: e26a5701e00ec055f3bcf693c1980c7d22147310
This commit is contained in:
parent
94b93484b5
commit
beef97fd5d
|
@ -243,7 +243,7 @@ func(c *ExampleController) Get() string |
|
||||||
mvc.Result or (mvc.Result, error)
|
mvc.Result or (mvc.Result, error)
|
||||||
```
|
```
|
||||||
|
|
||||||
where [mvc.Result](https://github.com/kataras/iris/blob/master/mvc/func_result.go) is an interface which contains only that function: `Dispatch(ctx iris.Context)`.
|
where [mvc.Result](https://github.com/kataras/iris/blob/master/mvc/go19.go#L10) is an [interface](https://github.com/kataras/iris/blob/master/hero/func_result.go#L18) which contains only that function: `Dispatch(ctx iris.Context)`.
|
||||||
|
|
||||||
## Using Iris MVC for code reuse
|
## Using Iris MVC for code reuse
|
||||||
|
|
||||||
|
@ -295,6 +295,10 @@ Follow the examples below,
|
||||||
- [Inject Data Between Handlers](view/context-view-data/main.go)
|
- [Inject Data Between Handlers](view/context-view-data/main.go)
|
||||||
- [Embedding Templates Into App Executable File](view/embedding-templates-into-app/main.go)
|
- [Embedding Templates Into App Executable File](view/embedding-templates-into-app/main.go)
|
||||||
- [Write to a custom `io.Writer`](view/write-to)
|
- [Write to a custom `io.Writer`](view/write-to)
|
||||||
|
- [Greeting with Pug (Jade)`](view/template_pug_0)
|
||||||
|
- [Pug (Jade) Actions`](view/template_pug_1)
|
||||||
|
- [Pug (Jade) Includes`](view/template_pug_2)
|
||||||
|
- [Pug (Jade) Extends`](view/template_pug_3)
|
||||||
|
|
||||||
You can serve [quicktemplate](https://github.com/valyala/quicktemplate) and [hero templates](https://github.com/shiyanhui/hero/hero) files too, simply by using the `context#ResponseWriter`, take a look at the [http_responsewriter/quicktemplate](http_responsewriter/quicktemplate) and [http_responsewriter/herotemplate](http_responsewriter/herotemplate) examples.
|
You can serve [quicktemplate](https://github.com/valyala/quicktemplate) and [hero templates](https://github.com/shiyanhui/hero/hero) files too, simply by using the `context#ResponseWriter`, take a look at the [http_responsewriter/quicktemplate](http_responsewriter/quicktemplate) and [http_responsewriter/herotemplate](http_responsewriter/herotemplate) examples.
|
||||||
|
|
||||||
|
|
|
@ -294,6 +294,10 @@ If you're new to back-end web development read about the MVC architectural patte
|
||||||
- [Inject Data Between Handlers](view/context-view-data/main.go)
|
- [Inject Data Between Handlers](view/context-view-data/main.go)
|
||||||
- [Embedding Templates Into App Executable File](view/embedding-templates-into-app/main.go)
|
- [Embedding Templates Into App Executable File](view/embedding-templates-into-app/main.go)
|
||||||
- [Write to a custom `io.Writer`](view/write-to)
|
- [Write to a custom `io.Writer`](view/write-to)
|
||||||
|
- [Greeting with Pug (Jade)`](view/template_pug_0)
|
||||||
|
- [Pug (Jade) Actions`](view/template_pug_1)
|
||||||
|
- [Pug (Jade) Includes`](view/template_pug_2)
|
||||||
|
- [Pug (Jade) Extends`](view/template_pug_3)
|
||||||
|
|
||||||
You can serve [quicktemplate](https://github.com/valyala/quicktemplate) and [hero templates](https://github.com/shiyanhui/hero/hero) files too, simply by using the `context#ResponseWriter`, take a look at the [http_responsewriter/quicktemplate](http_responsewriter/quicktemplate) and [http_responsewriter/herotemplate](http_responsewriter/herotemplate) examples.
|
You can serve [quicktemplate](https://github.com/valyala/quicktemplate) and [hero templates](https://github.com/shiyanhui/hero/hero) files too, simply by using the `context#ResponseWriter`, take a look at the [http_responsewriter/quicktemplate](http_responsewriter/quicktemplate) and [http_responsewriter/herotemplate](http_responsewriter/herotemplate) examples.
|
||||||
|
|
||||||
|
|
29
_examples/view/template_pug_0/main.go
Normal file
29
_examples/view/template_pug_0/main.go
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "github.com/kataras/iris"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := iris.New()
|
||||||
|
|
||||||
|
tmpl := iris.Pug("./templates", ".pug")
|
||||||
|
tmpl.Reload(true) // reload templates on each request (development mode)
|
||||||
|
tmpl.AddFunc("greet", func(s string) string { // add your template func here.
|
||||||
|
return "Greetings " + s + "!"
|
||||||
|
})
|
||||||
|
|
||||||
|
app.RegisterView(tmpl)
|
||||||
|
|
||||||
|
app.Get("/", index)
|
||||||
|
|
||||||
|
// http://localhost:8080
|
||||||
|
app.Run(iris.Addr(":8080"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func index(ctx iris.Context) {
|
||||||
|
ctx.ViewData("pageTitle", "My Index Page")
|
||||||
|
ctx.ViewData("youAreUsingJade", true)
|
||||||
|
// Q: why need extension .pug?
|
||||||
|
// A: Because you can register more than one view engine per Iris application.
|
||||||
|
ctx.View("index.pug")
|
||||||
|
|
||||||
|
}
|
25
_examples/view/template_pug_0/templates/index.pug
Normal file
25
_examples/view/template_pug_0/templates/index.pug
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
mixin withGo
|
||||||
|
| Generating Go html/template output.
|
||||||
|
|
||||||
|
doctype html
|
||||||
|
html(lang="en")
|
||||||
|
head
|
||||||
|
title= .pageTitle
|
||||||
|
script(type='text/javascript').
|
||||||
|
if (foo) {
|
||||||
|
bar(1 + 5)
|
||||||
|
}
|
||||||
|
body
|
||||||
|
h1 Jade - template engine
|
||||||
|
#container.col
|
||||||
|
if .youAreUsingJade
|
||||||
|
p {{ greet "iris user" }} <!-- execute template funcs -->
|
||||||
|
p You are amazing!
|
||||||
|
else
|
||||||
|
p Get on it!
|
||||||
|
p.
|
||||||
|
Jade is #[a(terse)] and simple
|
||||||
|
templating language with a
|
||||||
|
#[strong focus] on performance
|
||||||
|
and powerful features.
|
||||||
|
+ withGo
|
42
_examples/view/template_pug_1/main.go
Normal file
42
_examples/view/template_pug_1/main.go
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
// Package main shows an example of pug actions based on https://github.com/Joker/jade/tree/master/example/actions
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "github.com/kataras/iris"
|
||||||
|
|
||||||
|
type Person struct {
|
||||||
|
Name string
|
||||||
|
Age int
|
||||||
|
Emails []string
|
||||||
|
Jobs []*Job
|
||||||
|
}
|
||||||
|
|
||||||
|
type Job struct {
|
||||||
|
Employer string
|
||||||
|
Role string
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := iris.New()
|
||||||
|
|
||||||
|
tmpl := iris.Pug("./templates", ".pug")
|
||||||
|
app.RegisterView(tmpl)
|
||||||
|
|
||||||
|
app.Get("/", index)
|
||||||
|
|
||||||
|
// http://localhost:8080
|
||||||
|
app.Run(iris.Addr(":8080"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func index(ctx iris.Context) {
|
||||||
|
job1 := Job{Employer: "Monash B", Role: "Honorary"}
|
||||||
|
job2 := Job{Employer: "Box Hill", Role: "Head of HE"}
|
||||||
|
|
||||||
|
person := Person{
|
||||||
|
Name: "jan",
|
||||||
|
Age: 50,
|
||||||
|
Emails: []string{"jan@newmarch.name", "jan.newmarch@gmail.com"},
|
||||||
|
Jobs: []*Job{&job1, &job2},
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx.View("index.pug", person)
|
||||||
|
}
|
20
_examples/view/template_pug_1/templates/index.pug
Normal file
20
_examples/view/template_pug_1/templates/index.pug
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
doctype html
|
||||||
|
html(lang="en")
|
||||||
|
head
|
||||||
|
meta(charset="utf-8")
|
||||||
|
title Title
|
||||||
|
body
|
||||||
|
p ads
|
||||||
|
ul
|
||||||
|
li The name is {{.Name}}.
|
||||||
|
li The age is {{.Age}}.
|
||||||
|
|
||||||
|
each _,_ in .Emails
|
||||||
|
div An email is {{.}}
|
||||||
|
|
||||||
|
| {{ with .Jobs }}
|
||||||
|
each _,_ in .
|
||||||
|
div
|
||||||
|
An employer is {{.Employer}}
|
||||||
|
and the role is {{.Role}}
|
||||||
|
| {{ end }}
|
28
_examples/view/template_pug_2/main.go
Normal file
28
_examples/view/template_pug_2/main.go
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"html/template"
|
||||||
|
|
||||||
|
"github.com/kataras/iris"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := iris.New()
|
||||||
|
|
||||||
|
tmpl := iris.Pug("./templates", ".pug")
|
||||||
|
tmpl.Reload(true) // reload templates on each request (development mode)
|
||||||
|
tmpl.AddFunc("bold", func(s string) (template.HTML, error) { // add your template func here.
|
||||||
|
return template.HTML("<b>" + s + "</b>"), nil
|
||||||
|
})
|
||||||
|
|
||||||
|
app.RegisterView(tmpl)
|
||||||
|
|
||||||
|
app.Get("/", index)
|
||||||
|
|
||||||
|
// http://localhost:8080
|
||||||
|
app.Run(iris.Addr(":8080"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func index(ctx iris.Context) {
|
||||||
|
ctx.View("index.pug")
|
||||||
|
}
|
2
_examples/view/template_pug_2/templates/footer.pug
Normal file
2
_examples/view/template_pug_2/templates/footer.pug
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
#footer
|
||||||
|
p Copyright (c) foobar
|
4
_examples/view/template_pug_2/templates/header.pug
Normal file
4
_examples/view/template_pug_2/templates/header.pug
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
head
|
||||||
|
title My Site
|
||||||
|
<!-- script(src='/javascripts/jquery.js')
|
||||||
|
script(src='/javascripts/app.js') -->
|
7
_examples/view/template_pug_2/templates/index.pug
Normal file
7
_examples/view/template_pug_2/templates/index.pug
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
doctype html
|
||||||
|
html
|
||||||
|
include templates/header.pug
|
||||||
|
body
|
||||||
|
h1 My Site
|
||||||
|
p {{ bold "Welcome to my super lame site."}}
|
||||||
|
include templates/footer.pug
|
20
_examples/view/template_pug_3/main.go
Normal file
20
_examples/view/template_pug_3/main.go
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "github.com/kataras/iris"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := iris.New()
|
||||||
|
|
||||||
|
tmpl := iris.Pug("./templates", ".pug")
|
||||||
|
|
||||||
|
app.RegisterView(tmpl)
|
||||||
|
|
||||||
|
app.Get("/", index)
|
||||||
|
|
||||||
|
// http://localhost:8080
|
||||||
|
app.Run(iris.Addr(":8080"))
|
||||||
|
}
|
||||||
|
|
||||||
|
func index(ctx iris.Context) {
|
||||||
|
ctx.View("index.pug")
|
||||||
|
}
|
7
_examples/view/template_pug_3/templates/index.pug
Normal file
7
_examples/view/template_pug_3/templates/index.pug
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
extends templates/layout.pug
|
||||||
|
|
||||||
|
block title
|
||||||
|
title Article Title
|
||||||
|
|
||||||
|
block content
|
||||||
|
h1 My Article
|
7
_examples/view/template_pug_3/templates/layout.pug
Normal file
7
_examples/view/template_pug_3/templates/layout.pug
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
doctype html
|
||||||
|
html
|
||||||
|
head
|
||||||
|
block title
|
||||||
|
title Default title
|
||||||
|
body
|
||||||
|
block content
|
|
@ -10,6 +10,12 @@ import (
|
||||||
// It has got some features and a lot of functions
|
// It has got some features and a lot of functions
|
||||||
// which will make your life easier.
|
// which will make your life easier.
|
||||||
// Read more about the Jade Go Template: https://github.com/Joker/jade
|
// Read more about the Jade Go Template: https://github.com/Joker/jade
|
||||||
|
//
|
||||||
|
// Examples:
|
||||||
|
// https://github.com/kataras/iris/tree/master/_examples/view/template_pug_0
|
||||||
|
// https://github.com/kataras/iris/tree/master/_examples/view/template_pug_1
|
||||||
|
// https://github.com/kataras/iris/tree/master/_examples/view/template_pug_2
|
||||||
|
// https://github.com/kataras/iris/tree/master/_examples/view/template_pug_3
|
||||||
func Pug(directory, extension string) *HTMLEngine {
|
func Pug(directory, extension string) *HTMLEngine {
|
||||||
s := HTML(directory, extension)
|
s := HTML(directory, extension)
|
||||||
s.middleware = jade.Parse
|
s.middleware = jade.Parse
|
||||||
|
|
Loading…
Reference in New Issue
Block a user