تقديم القالب
لدى 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.
النتيجة المُرجعة يجب أن تكون كالتالي:
صفحة مرحبًا
مرحبا بالعالم!
تحية لك!