ٹیمپلیٹ رینڈرنگ

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 پر جائیں۔

رینڈر شدہ نتیجہ درج ذیل ہونا چاہئے:

    ہائی صفحہ


    ہیلو ورلڈ!
    آپ کو مبارک ہو!