টেমপ্লেট রেন্ডারিং

Iris-এর জন্য প্রাথমিকভাবে আটটি টেমপ্লেট ইঞ্জিনের সাপোর্ট রয়েছে, এবং বিকাশকারীরা এখনো যেকোনো বাইরের গো ভাষার টেমপ্লেট ইঞ্জিন ব্যবহার করতে পারেন কারণ Context.ResponseWriter() একটি io.Writer এ।

সবগুলি টেমপ্লেট ইঞ্জিনের মধ্যে একটি সাধারণ API আছে, যা ইম্বেডেড রিসোর্স ব্যবহার করে এবং লেআউট এবং পার্টি-বিশেষ লেআউট, টেমপ্লেট ফাংশন, এবং আংশিক রেন্ডারিং ব্যবহার করে থাকে।

# নাম পার্সার
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)" মেথড ব্যবহার করে রেজিস্টার করুন, যেমন নিচে দেখানো হয়েছে:

"./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 মেথড ব্যবহার করে ভিউ-তে গো মানের key-value প্যাটার্ন দেওয়া যায়।

{{.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 + "!"
})

আপনি যদি প্রতিটি রিকুয়েস্টে রিলোড করতে চান, তাহলে ভিউ ইঞ্জিনের Reload মেথডটি কল করুন।

tmpl.Reload(true)

লোকাল ফাইল সিস্টেমে নির্ভর ছাড়াই এম্বেডেড টেমপ্লেট ব্যবহার করতে চাইলে, বাইরের টুল go-bindata ব্যবহার করুন এবং preferred view engine-এর জন্য সংগ্রহিত 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) {
        // "Hello world!" কে {{.message}} এ বাইন্ড করা হবে
        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 ভিজিট করুন।

রেন্ডার হওয়া ফলাফল নিম্নের মত হবে:

    হাই পেজ


    হ্যালো ওয়ার্ল্ড!
    আপনাকে অভিবাদন!