Go-তে HTML Template Rendering এবং Static Files Serve করা
Go প্রোগ্রামিং ভাষায় HTML template rendering এবং static files serve করা সহজ এবং কার্যকরী। html/template প্যাকেজটি ব্যবহার করে আপনি HTML টেমপ্লেট রেন্ডার করতে পারেন এবং static files (যেমন CSS, JS, ইমেজ) সরবরাহ করতে http প্যাকেজের সাহায্যে সঠিকভাবে হ্যান্ডেল করতে পারেন।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে HTML Templates রেন্ডার করা হয় এবং কিভাবে Static Files (যেমন CSS, JavaScript) ব্যবহার করা যায় একটি Go অ্যাপ্লিকেশনে।
১. HTML Template Rendering
Go তে HTML template rendering করতে html/template প্যাকেজ ব্যবহার করা হয়। এটি একটি শক্তিশালী টেমপ্লেট ইঞ্জিন যা ডেটা ডাইনামিকভাবে HTML ডকুমেন্টে প্রিন্ট করতে সাহায্য করে।
১.১ HTML Template তৈরি এবং রেন্ডার করা
প্রথমে একটি HTML Template তৈরি করি এবং তারপর তা Go এর মাধ্যমে রেন্ডার করা হবে।
১.১.১ HTML Template ফাইল তৈরি
ধরা যাক, আপনার একটি index.html ফাইল আছে যা ডেটা রেন্ডার করবে:
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.Title}}</title>
</head>
<body>
<h1>{{.Message}}</h1>
</body>
</html>এখানে:
{{.Title}}এবং{{.Message}}হল template variables, যা ডাইনামিকভাবে ডেটার মাধ্যমে পরিবর্তিত হবে।
১.১.২ Go কোডে HTML Template রেন্ডার করা
package main
import (
"fmt"
"html/template"
"net/http"
)
type PageVariables struct {
Title string
Message string
}
func handler(w http.ResponseWriter, r *http.Request) {
pageVariables := PageVariables{
Title: "Go HTML Template",
Message: "Welcome to Go HTML Template Rendering!",
}
// HTML template রেন্ডার করা
tmpl, err := template.ParseFiles("index.html")
if err != nil {
fmt.Println(err)
return
}
// template.Execute() দ্বারা ডেটা রেন্ডার করা
tmpl.Execute(w, pageVariables)
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("Starting server at :8080...")
http.ListenAndServe(":8080", nil)
}এখানে:
template.ParseFilesফাংশনটি HTML টেমপ্লেট ফাইলটি লোড করে।tmpl.Executeফাংশনটি টেমপ্লেটে ডেটা রেন্ডার করে এবং ক্লায়েন্টকে পাঠায়।
টেস্ট করতে:
- আপনার Go অ্যাপ্লিকেশন চালান:
go run main.go - ব্রাউজারে গিয়ে
http://localhost:8080এ যান। - আপনি টেমপ্লেটের ডাইনামিক ডেটা দেখতে পাবেন।
২. Static Files Serve করা
Go তে static files (যেমন CSS, JavaScript, ইমেজ) serve করার জন্য http.ServeFile অথবা http.FileServer ব্যবহার করা হয়।
২.১ Static File Serve করা
ধরা যাক, আপনার অ্যাপ্লিকেশনে কিছু CSS এবং JS ফাইল রয়েছে, যা আপনি স্ট্যাটিকভাবে serve করতে চান।
২.১.১ Directory Structure
/myapp
/static
/css
styles.css
/js
script.js
main.go
index.html২.১.২ CSS এবং JS ফাইল serve করা
package main
import (
"fmt"
"html/template"
"net/http"
)
type PageVariables struct {
Title string
Message string
}
func handler(w http.ResponseWriter, r *http.Request) {
pageVariables := PageVariables{
Title: "Go HTML Template",
Message: "Welcome to Go HTML Template Rendering!",
}
tmpl, err := template.ParseFiles("index.html")
if err != nil {
fmt.Println(err)
return
}
tmpl.Execute(w, pageVariables)
}
func main() {
// Static files serve করা
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static"))))
// Template render handler
http.HandleFunc("/", handler)
fmt.Println("Starting server at :8080...")
http.ListenAndServe(":8080", nil)
}এখানে:
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static"))))লাইনে আমরা স্ট্যাটিক ফাইল সার্ভ করার জন্যhttp.FileServerব্যবহার করেছি। এটিstaticডিরেক্টরি থেকে ফাইল serve করবে এবং ক্লায়েন্টকে পাঠাবে।http.StripPrefixদিয়ে আমরা/static/পাথকে ফাইলের রুট থেকে বাদ দিয়ে ডিরেক্টরির ভিতরের ফাইল serve করেছি।
২.২ Static Files Access
এখন, আপনি যদি styles.css অথবা script.js ফাইলকে serve করতে চান, আপনি ব্রাউজারে গিয়ে:
http://localhost:8080/static/css/styles.css
http://localhost:8080/static/js/script.jsএগুলো অ্যাক্সেস করতে পারবেন।
৩. Combining Template Rendering and Static Files
আপনি HTML টেমপ্লেট রেন্ডার এবং স্ট্যাটিক ফাইল serve একসাথে ব্যবহার করতে পারেন, যাতে টেমপ্লেটের মধ্যে স্ট্যাটিক ফাইল যেমন CSS বা JavaScript লিংক করা যায়।
৩.১ HTML Template with Static Files
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{.Title}}</title>
<link rel="stylesheet" type="text/css" href="/static/css/styles.css">
</head>
<body>
<h1>{{.Message}}</h1>
<script src="/static/js/script.js"></script>
</body>
</html>এখানে, আমরা HTML টেমপ্লেটে স্ট্যাটিক ফাইলের লিঙ্ক যোগ করেছি।
সারসংক্ষেপ
- HTML Template Rendering: Go-তে
html/templateপ্যাকেজ ব্যবহার করে আপনি HTML টেমপ্লেট রেন্ডার করতে পারেন এবং ডাইনামিকভাবে ডেটা প্রদান করতে পারেন। - Static Files Serve: Go তে
http.FileServerএবংhttp.ServeFileব্যবহার করে আপনি স্ট্যাটিক ফাইল (যেমন CSS, JS) সার্ভ করতে পারেন। - Integration: HTML টেমপ্লেট এবং স্ট্যাটিক ফাইল একসাথে কাজ করতে পারে, যেখানে আপনি টেমপ্লেটে স্ট্যাটিক ফাইলের লিঙ্ক যোগ করতে পারেন।
Go-তে HTML Template Rendering এবং Static Files Serve খুবই সহজ এবং কার্যকরী, যা ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য শক্তিশালী ফিচার।
Read more