forked from jiaoge/sjet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
engine.go
66 lines (57 loc) · 1.16 KB
/
engine.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package engine
import (
"github.com/CloudyKit/jet/v6"
"github.com/shoppehub/conf"
)
// 模板引擎配置
type TemplateEngine struct {
Views *jet.Set
IsFs *bool
Loader *TemplateLoader
}
// 模板文件加载器
type TemplateLoader interface {
jet.Loader
Set(templatePath, contents string)
Delete(templatePath string)
}
// 根据内存创建
func CreateWithMem() *TemplateEngine {
return create(false, "")
}
// 根据本地文件创建
func CreateWithFile(dir string) *TemplateEngine {
return create(true, dir)
}
// 创建新实例
func create(isFs bool, dir string) *TemplateEngine {
var views *jet.Set
ecache := ECache{}
var loader TemplateLoader
if isFs {
loader = NewOSFileSystemLoader(dir, views, &ecache)
} else {
loader = jet.NewInMemLoader()
}
extension := jet.WithTemplateNameExtensions([]string{".jet", ".html.jet", ".jet.html"})
cache := jet.WithCache(&ecache)
if conf.GetBool("production") {
views = jet.NewSet(
loader,
jet.InDevelopmentMode(),
cache,
extension,
)
} else {
views = jet.NewSet(
loader,
cache,
extension,
)
}
return &TemplateEngine{
Views: views,
IsFs: &isFs,
Loader: &loader,
}
}