تقديم القالب

لدى Iris دعمًا مدمجًا لثماني محركات نموذج، ويمكن للمطورين مازال استخدام أي محرك نموذج خارجي للغة Go لأن Context.ResponseWriter() هو واجهة io.Writer.

تشترك جميع محركات القوالب في واجهة برمجة التطبيقات المشتركة، بما في ذلك الجزء الخاص بتحليل الموارد المضمنة، والتخطيط والتخطيط الخاص بالحزب، وظوابط القوالب، وتقديم الجزء.

# الاسم المحلل
1 HTML html/template
2 Blocks kataras/blocks
3 Django flosch/pongo2
4 Pug Joker/jade
5 Handlebars aymerick/raymond
6 Amber eknkc/amber
7 Jet CloudyKit/jet
8 Ace yosssi/ace

يمكنك تسجيل محرك عرض لكل حزب. استخدم طريقة Application/Party.RegisterView(ViewEngine) للتسجيل، كما هو موضح في الأسفل:

تحميل جميع القوالب بامتداد ".html" من المجلد "./views" وتحليلها باستخدام حزمة 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 في الـ middleware أو مناول الطريق الرئيسي لـ ربط قيم Go بأنماط المفتاح-القيمة في العرض.

ربط {{.message}} بـ "مرحبًا بالعالم!".

ctx.ViewData("message", "مرحبًا بالعالم!")

الربط الأساسي:

if err := ctx.View("user-page.html", User{}); err != nil {
    ctx.HTML("%s", err.Error())
    return
}

// الربط الأساسي كـ {{.Name}}

استخدم طريقة AddFunc لـ إضافة وظائف القوالب إلى محرك العرض المفضل.

//       اسم الوظيفة، معلمات الإدخال، قيمة الإرجاع
tmpl.AddFunc("تحية", func(s string) string {
    return "تحياتي " + s + "!"
})

إذا كنت ترغب في إعادة تحميل في كل طلب، استدعي طريقة إعادة تحميل محرك العرض.

tmpl.Reload(true)

إذا كنت ترغب في استخدام القوالب المدمجة دون الاعتماد على نظام الملفات المحلي، استخدم أداة خارجية go-bindata وقم بتمرير دالة AssetFile() التي تولدها كمعلمة إدخال أولى إلى محرك العرض المفضل.

tmpl := iris.HTML(AssetFile(), ".html")

الشفرة المصدرية العينية:

// ملف: main.go
package main

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)
    
    // الطريقة: GET
    // المورد: 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 "to you"}}

افتح علامة تبويب جديدة في المستعرض الخاص بك وقم بزيارة http://localhost:8080.

النتيجة المُرجعة يجب أن تكون كالتالي:

    صفحة مرحبًا


    مرحبا بالعالم!
    تحية لك!