ٹیمپلیٹ رینڈرنگ
Iris میں ہر آٹھ ٹیمپلیٹ انجن کا اندراج ہے، اور ڈویلپرز کسی بھی بیرونی Go زبان ٹیمپلیٹ انجن کا استعمال کرسکتے ہیں کیونکہ Context.ResponseWriter()
ایک io.Writer
ہے۔
تمام ٹیمپلیٹ انجنز میں ایک مشترکہ API ہے، جو شاملہ ذرائع کا استعمال، لے آؤٹ اور پارٹی کے مخصوص لے آؤٹ، ٹیمپلیٹ فنکشنز، اور جزوی رینڈرنگ شامل ہے۔
# | نام | پارسر |
---|---|---|
1 | HTML | html/template |
2 | بلاکس | kataras/blocks |
3 | ڈجانگو | flosch/pongo2 |
4 | پگ | 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
میتھاڈ کا استعمال کریں تاکہ Go مقدار کو کلید-قیمت کے پیٹرنز کے ساتھ بائنڈ کیا جا سکے۔
{{.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 "Greetings " + s + "!"
})
اگر آپ ہر درخواست پر دوبارہ لوڈ کرنا چاہتے ہیں، تو ویو انجن کا Reload
میتھاڈ کا استعمال کریں۔
tmpl.Reload(true)
اگر آپ مقامی فائل سسٹم پر منحصر نہیں رہنا چاہتے ہیں، تو باہری ٹول go-bindata کا استعمال کریں اور preferred view engine
کو پہلے ان پٹ پیرامیٹر کے طور پر حاصل کردہ AssetFile()
فنکشن کو پاس کریں۔
tmpl := iris.HTML(AssetFile(), ".html")
مثالی کوڈ:
// فائل: main.go
پیکیج: اہم
import "github.com/kataras/iris/v12"
func main() {
app := iris.New()
// تمام ٹمپلیٹس ".html" سلیفکس کے ساتھ "./views" فولڈر سے پارس کریں
// پارسنگ کے لئے عام `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", func(s string) string {
return "مبارک ہو " + s + "!"
})
// ویو انجن کو اطلاق کریں
// یہ ٹمپلیٹس لوڈ کرے گا۔
app.RegisterView(tmpl)
// میتھڈ: گیٹ
// ریسورس: http://localhost:8080
app.Get("/", func(ctx iris.Context) {
// {{.message}} کو "ہیلو ورلڈ!" سے بانڈ کریں
ctx.ViewData("message", "ہیلو ورلڈ!")
// ٹمپلیٹ فائل رینڈر کریں: ./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 پر جائیں۔
رینڈر شدہ نتیجہ درج ذیل ہونا چاہئے:
ہائی صفحہ
ہیلو ورلڈ!
آپ کو مبارک ہو!