Dalam seni bina ini, Astro bertanggungjawab untuk penjanaan tapak statik dan pengoptimuman aset, mencipta fail HTML, CSS dan JavaScript yang dipra-render untuk prestasi tinggi dan penyampaian yang cekap. Go Fiber mengendalikan pemprosesan data dinamik, penyepaduan API dan menyediakan fail statik, menyediakan kemas kini data masa nyata dan penghalaan bahagian pelayan dan pengurusan perisian tengah yang cekap. Gabungan ini memanfaatkan kekuatan kedua-dua teknologi untuk mencipta aplikasi web yang berprestasi dan berskala.
Berikut ialah panduan langkah demi langkah untuk mencipta aplikasi web menggunakan Seni Bina Hibrid Rendering dengan Astro dan Go Fiber.
npm create astro@latest cd my-astro-site
Buat src/pages/index.astro:
--- export const prerender = true; --- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{Astro.props.title}</title> <link rel="stylesheet" href="/assets/style.css"> </head> <body> <h1>{Astro.props.title}</h1> <p>{Astro.props.message}</p> <script src="/assets/script.js"></script> </body> </html>
Buat src/assets/style.css:
body { font-family: Arial, sans-serif; background-color: #f0f0f0; margin: 0; padding: 20px; }
Buat src/assets/script.js:
document.addEventListener('DOMContentLoaded', () => { console.log('Astro and Go Fiber working together!'); });
npm run build
go mod init mysite go get github.com/gofiber/fiber/v2
Buat main.go:
package main import ( "log" "github.com/gofiber/fiber/v2" "path/filepath" "encoding/json" "io/ioutil" "bytes" "os/exec" "net/http" ) // Function to render Astro template func renderAstroTemplate(templatePath string, data map[string]interface{}) (string, error) { cmd := exec.Command("astro", "build", "--input", templatePath) // Pass data to template via stdin jsonData, err := json.Marshal(data) if err != nil { return "", err } cmd.Stdin = bytes.NewBuffer(jsonData) output, err := cmd.CombinedOutput() if err != nil { return "", fmt.Errorf("failed to execute astro build: %s", string(output)) } // Read generated file outputPath := filepath.Join("dist", "index.html") content, err := ioutil.ReadFile(outputPath) if err != nil { return "", err } return string(content), nil } func main() { app := fiber.New() // Serve static files from the dist directory app.Static("/", "./my-astro-site/dist") app.Get("/", func(c *fiber.Ctx) error { data := map[string]interface{}{ "title": "My Astro Site", "message": "Welcome to my site built with Astro and Go Fiber!", } htmlContent, err := renderAstroTemplate("./my-astro-site/src/pages/index.astro", data) if err != nil { return c.Status(http.StatusInternalServerError).SendString(err.Error()) } return c.Type("html").SendString(htmlContent) }) log.Fatal(app.Listen(":3000")) }
go run main.go
Buka penyemak imbas anda dan navigasi ke http://localhost:3000.
Dalam contoh ini, Astro mengendalikan penjanaan tapak statik, mencipta fail HTML, CSS dan JavaScript yang dioptimumkan. Go Fiber menyediakan fail statik ini dan menyuntik data secara dinamik ke dalam templat, membolehkan kemas kini data masa nyata. Seni bina rendering hibrid ini memanfaatkan kekuatan kedua-dua teknologi untuk mencipta aplikasi web yang berprestasi dan berskala.
Atas ialah kandungan terperinci Seni Bina Hibrid Rendering menggunakan Astro dan Go Fiber. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!