टेम्पलेट रेंडरिंग
Iris में आठ टेम्पलेट इंजन का सहारा है, और डेवलपर्स अभी भी किसी भी बाहरी गो भाषा टेम्पलेट इंजन का उपयोग कर सकते हैं क्योंकि Context.ResponseWriter()
एक io.Writer
होता है।
सभी टेम्पलेट इंजन एक साझा API को साझा करते हैं, जिसमें संबंधित संसाधनों का पार्शिंग, लेआउट और पार्टी-विशिष्ट लेआउट, टेम्पलेट फंक्शन, और भागीदार रेंडरिंग शामिल है।
# | नाम | पार्सर |
---|---|---|
1 | HTML | html/template |
2 | ब्लॉक्स | kataras/blocks |
3 | ड्जांगो | flosch/pongo2 |
4 | Pug | Joker/jade |
5 | हैंडलबार्स | aymerick/raymond |
6 | एंबर | eknkc/amber |
7 | जेट | CloudyKit/jet |
8 | एस | yosssi/ace |
आप प्रत्येक पार्टी के लिए एक व्यू इंजन को रजिस्टर कर सकते हैं। रजिस्टर करने के लिए Application/Party.RegisterView(ViewEngine)
मेर्थड का उपयोग करें, जैसा निम्नलिखित में दिखाया गया है:
"./views" फोल्डर से ".html" एक्सटेंशन वाले सभी टेम्पलेट्स को लोड करें और मानक html/template
पैकेज का उपयोग करके पार्स करें।
// [app := iris.New...]
tmpl := iris.HTML("./views", ".html")
app.RegisterView(tmpl)
मुख्य रूट हैंडलर में, व्यू को रेंडर या एक्जीक्यूट करने के लिए Context.View
मेर्थड का उपयोग करें।
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
मिडलवेयर या मुख्य हैंडलर में Context.ViewData
मेर्थड का उपयोग करें जिश से व्यू में कुंजी-मान ढंग से गो मान्यताओं को बाइंड किया जा सकता है।
{{.message}}
को "Hello world!"
के साथ बाइंड करें।
ctx.ViewData("message", "Hello world!")
रूट बाइंडिंग:
if err := ctx.View("user-page.html", User{}); err != nil {
ctx.HTML("%s", err.Error())
return
}
// रूट बाइंडिंग के रूप में {{.Name}}
टेम्पलेट फंक्शन्स जोड़ने के लिए पसंदीदा व्यू इंजन
के AddFunc
मेर्थड का उपयोग करें।
// फंक्शन नाम, इनपुट पैरामीटर, वापसी मूल्य
tmpl.AddFunc("greet", func(s string) string {
return "अभिवादन " + s + "!"
})
अगर आप प्रत्येक अनुरोध पर पुनरावृत्ति करना चाहते हैं, तो व्यू इंजन के पुनरावृत्ति
मेर्थड को कॉल करें।
tmpl.Reload(true)
अगर आप स्थानीय फाइल सिस्टम पर निर्भर न होकर संबंधित टेम्पलेट्स का उपयोग करना चाहते हैं, तो बाहरी टूल go-bindata का उपयोग करें और पसंदीदा व्यू इंजन
को पहले इनपुट पैरामीटर के रूप में उपयोग करने के लिए जो फंक्शन उसने उत्पन्न किया है, को पास करें।
tmpl := iris.HTML(AssetFile(), ".html")
उदाहरण कोड:
// फ़ाइल: मुख्य.go
पैकेज मुख्य
आई लिब्रेरीज "github.com/kataras/iris/v12" का उपयोग करें
मुख्य() {
app := iris.New()
// सभी टेम्पलेट्स को "./views" फ़ोल्डर से ".html" सफ़िक्स के साथ खोजें
// पार्सिंग के लिए मानक `html/template` पैकेज का उपयोग करें
tmpl := iris.HTML("./views", ".html")
// कस्टम डिलीमिटर सेट करें
tmpl.Delims("{{", "}}")
// स्थानीय टेम्पलेट फ़ाइल परिवर्तन के लिए पुनः संकलन सक्षम करें
tmpl.Reload(true)
// डिफ़ॉल्ट टेम्पलेट फ़ंक्शन्स शामिल हैं:
//
// - {{ urlpath "myNamedRoute" "pathParameter_ifNeeded" }}
// - {{ render "header.html" . }}
// और वर्तमान पृष्ठ के लिए संबंधित पथ:
// - {{ render_r "header.html" . }}
// - {{ yield . }}
// - {{ current }}
// कस्टम टेम्पलेट फ़ंक्शन रजिस्टर करें:
tmpl.AddFunc("greet", फ़ंक्शन(s string) string {
return "नमस्ते " + s + "!"
})
// दृश्य इंजन को एप्लिकेशन में रजिस्टर करें,
// यह टेम्पलेट्स लोड करेगा।
app.RegisterView(tmpl)
// विधि: GET
// संसाधन: http://localhost:8080
app.Get("/", फ़ंक्शन(ctx iris.Context) {
// {{.message}} को "Hello world!" से बाइंड करें
ctx.ViewData("message", "Hello world!")
// टेम्पलेट फ़ाइल को रेंडर करें: ./views/hi.html
if err := ctx.View("hi.html"); err != nil {
ctx.HTML("%s", err.Error())
return
}
})
app.Listen(":8080")
}
नमस्ते पृष्ठ
{{.message}}
{{greet "तुम्हारा"}}
अपने ब्राउज़र में नया टैब खोलें और http://localhost:8080 पर जाएं।
रेंडर किया गया परिणाम निम्नलिखित होना चाहिए:
नमस्ते पृष्ठ
Hello world!
नमस्ते तुम्हारा!