106 lignes
5,5 Kio
Markdown
106 lignes
5,5 Kio
Markdown
|
# Jet Template Engine for Go [![Build Status](https://travis-ci.org/CloudyKit/jet.svg?branch=master)](https://travis-ci.org/CloudyKit/jet)
|
||
|
|
||
|
[![Join the chat at https://gitter.im/CloudyKit/jet](https://badges.gitter.im/CloudyKit/jet.svg)](https://gitter.im/CloudyKit/jet?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||
|
|
||
|
Jet is a template engine developed to be easy to use, powerful, dynamic, yet secure and very fast.
|
||
|
|
||
|
* supports template inheritance with `extends`, `import` and `include` statements
|
||
|
* descriptive error messages with filename and line number
|
||
|
* auto-escape
|
||
|
* simple C-like expressions
|
||
|
* very fast execution – Jet can execute templates faster than some pre-compiled template engines
|
||
|
* very light in terms of allocations and memory footprint
|
||
|
* simple and familiar syntax
|
||
|
* easy to use
|
||
|
|
||
|
You can find the documentation in the [wiki](https://github.com/CloudyKit/jet/wiki).
|
||
|
|
||
|
#### Upgrade to v2
|
||
|
|
||
|
The last release of v1 was v1.2 which is available at https://github.com/CloudyKit/jet/releases/tag/v1.2 and the tag v1.2.
|
||
|
|
||
|
To upgrade to v2 a few updates to your templates are necessary – these are explained in the [upgrade guide](https://github.com/CloudyKit/jet/wiki/Upgrade-to-v2).
|
||
|
|
||
|
#### IntelliJ Plugin
|
||
|
|
||
|
If you use IntelliJ there is a plugin available at https://github.com/jhsx/GoJetPlugin.
|
||
|
There is also a very good Go plugin for IntelliJ – see https://github.com/go-lang-plugin-org/go-lang-idea-plugin.
|
||
|
GoJetPlugin + Go-lang-idea-plugin = happiness!
|
||
|
|
||
|
### Examples
|
||
|
|
||
|
You can find examples in the [wiki](https://github.com/CloudyKit/jet/wiki/Jet-template-syntax).
|
||
|
|
||
|
### Running the example application
|
||
|
|
||
|
An example application is available in the repository. Use `go get -u github.com/CloudyKit/jet` or clone the repository into `$GOPATH/github.com/CloudyKit/jet`, then do:
|
||
|
```
|
||
|
$ cd examples/todos; go run main.go
|
||
|
```
|
||
|
|
||
|
#### Faster than some pre-compiled template engines
|
||
|
|
||
|
The benchmark consists of a range over a slice of data printing the values, the benchmark is based on https://github.com/SlinSo/goTemplateBenchmark, Jet performs better than all template engines without pre-compilation,
|
||
|
and performs better than gorazor, Ftmpl and Egon, all of which are pre-compiled to Go.
|
||
|
|
||
|
###### Benchmarks
|
||
|
|
||
|
go 1.6.2
|
||
|
```
|
||
|
PASS
|
||
|
BenchmarkEgonSlinso-4 2000000 989 ns/op 517 B/op 0 allocs/op
|
||
|
BenchmarkQuicktemplate-4 1000000 1004 ns/op 999 B/op 0 allocs/op
|
||
|
BenchmarkEgo-4 1000000 2137 ns/op 603 B/op 8 allocs/op
|
||
|
|
||
|
BenchmarkJet-4 500000 2798 ns/op 536 B/op 0 allocs/op
|
||
|
BenchmarkJetHTML-4 500000 2822 ns/op 536 B/op 0 allocs/op
|
||
|
|
||
|
BenchmarkGorazor-4 500000 3028 ns/op 613 B/op 11 allocs/op
|
||
|
BenchmarkFtmpl-4 500000 3192 ns/op 1152 B/op 12 allocs/op
|
||
|
BenchmarkEgon-4 300000 4673 ns/op 1172 B/op 22 allocs/op
|
||
|
BenchmarkKasia-4 200000 6902 ns/op 1789 B/op 26 allocs/op
|
||
|
BenchmarkSoy-4 200000 7144 ns/op 1684 B/op 26 allocs/op
|
||
|
BenchmarkMustache-4 200000 8213 ns/op 1568 B/op 28 allocs/op
|
||
|
BenchmarkPongo2-4 200000 9989 ns/op 2949 B/op 46 allocs/op
|
||
|
BenchmarkGolang-4 100000 16284 ns/op 2039 B/op 38 allocs/op
|
||
|
BenchmarkAmber-4 100000 17208 ns/op 2050 B/op 39 allocs/op
|
||
|
BenchmarkHandlebars-4 50000 29864 ns/op 4258 B/op 90 allocs/op
|
||
|
BenchmarkAce-4 30000 40771 ns/op 5710 B/op 77 allocs/op
|
||
|
BenchmarkDamsel-4 20000 95947 ns/op 11160 B/op 165 allocs/op
|
||
|
ok github.com/SlinSo/goTemplateBenchmark 34.384s
|
||
|
```
|
||
|
|
||
|
go tip
|
||
|
```
|
||
|
BenchmarkQuicktemplate-4 2000000 916 ns/op 999 B/op 0 allocs/op
|
||
|
BenchmarkEgonSlinso-4 2000000 1074 ns/op 517 B/op 0 allocs/op
|
||
|
BenchmarkEgo-4 1000000 1822 ns/op 603 B/op 8 allocs/op
|
||
|
|
||
|
BenchmarkJetHTML-4 500000 2627 ns/op 536 B/op 0 allocs/op
|
||
|
BenchmarkJet-4 500000 2652 ns/op 536 B/op 0 allocs/op
|
||
|
|
||
|
BenchmarkFtmpl-4 500000 2700 ns/op 1152 B/op 12 allocs/op
|
||
|
BenchmarkGorazor-4 500000 2858 ns/op 613 B/op 11 allocs/op
|
||
|
BenchmarkEgon-4 500000 4023 ns/op 827 B/op 22 allocs/op
|
||
|
BenchmarkSoy-4 300000 5590 ns/op 1784 B/op 26 allocs/op
|
||
|
BenchmarkKasia-4 200000 6487 ns/op 1789 B/op 26 allocs/op
|
||
|
BenchmarkMustache-4 200000 6515 ns/op 1568 B/op 28 allocs/op
|
||
|
BenchmarkPongo2-4 200000 7602 ns/op 2949 B/op 46 allocs/op
|
||
|
BenchmarkAmber-4 100000 13942 ns/op 2050 B/op 39 allocs/op
|
||
|
BenchmarkGolang-4 100000 16945 ns/op 2039 B/op 38 allocs/op
|
||
|
BenchmarkHandlebars-4 100000 20152 ns/op 4258 B/op 90 allocs/op
|
||
|
BenchmarkAce-4 50000 33091 ns/op 5509 B/op 77 allocs/op
|
||
|
BenchmarkDamsel-4 20000 86340 ns/op 11159 B/op 165 allocs/op
|
||
|
PASS
|
||
|
ok github.com/SlinSo/goTemplateBenchmark 36.200s
|
||
|
```
|
||
|
|
||
|
#### Contributing
|
||
|
|
||
|
All contributions are welcome – if you find a bug please report it.
|
||
|
|
||
|
#### Thanks
|
||
|
|
||
|
- @golang developers for the awesome language and the standard library
|
||
|
- @SlinSo for the benchmarks that I used as a base to show the results above
|