Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah golang menulis laman web?

Bolehkah golang menulis laman web?

PHPz
PHPzasal
2023-05-10 09:10:06760semak imbas

Dengan pembangunan berterusan teknologi Web, halaman web telah menjadi alat penyebaran maklumat dan interaksi yang penting. Dalam proses ini, pelbagai teknologi turut dilahirkan, termasuk kebangkitan bahasa JavaScript sebelah pelayan seperti SNode.js.

Namun, ramai pembangun mungkin ingin tahu, bolehkah golang, bahasa yang digunakan untuk pembangunan back-end, digunakan untuk menulis halaman web? Jawapannya ya. Dalam artikel ini, kami akan memperkenalkan cara golang menyokong pembangunan web, serta kaedah dan langkah berjaga-jaga untuk menggunakan golang untuk menulis halaman web.

  1. golang menyokong rangka kerja pembangunan web

Seperti bahasa rendah lain, golang sendiri bukanlah bahasa yang khusus digunakan untuk pembangunan web, tetapi ia boleh bekerjasama dengan rangka kerja web yang Digunakan untuk pembangunan web. Berikut ialah beberapa rangka kerja web golang biasa:

1.1 Gin

Pada masa ini, Gin telah menjadi rangka kerja web pilihan bagi banyak pembangun golang. Ia mempunyai ciri-ciri berikut:

  • Struktur ringkas, mudah dipelajari dan digunakan
  • Prestasi tinggi, jauh lebih pantas daripada net/http
  • Menyokong perisian tengah dan mudah dikembangkan
  • Sediakan sokongan API RESTful
  • Sediakan dokumentasi dan sokongan komuniti yang sangat baik

1.2 Beego

Beego ialah rangka kerja aplikasi web peringkat perusahaan ciri berbeza daripada Gin:

  • Mengandungi banyak komponen dan modul berfungsi, menyokong ciri biasa seperti ORM, MVC, dsb.
  • Menyediakan banyak alatan baris arahan dan menyokong Automasi Deployment dan ujian
  • Menyokong berbilang bahasa dan boleh menyokong aplikasi antarabangsa

1.3 Revel

Revel ditulis golang bergantung pada Rangka kerja Web Netty (pelayan web berprestasi tinggi) , dengan ciri berikut:

  • Menyokong seni bina RESTful
  • Rangka kerja ORM Bersepadu
  • Menyokong pemuatan panas untuk mempercepatkan proses penyahpepijatan dan penggunaan kod

Ciri berbeza bagi tiga rangka kerja web di atas boleh memenuhi keperluan jenis aplikasi web yang berbeza, dan pembangun boleh memilih mengikut keperluan sebenar mereka.

  1. Cara menulis halaman web dalam golang

Setelah memahami rangka kerja Web golang, kita boleh mula belajar cara menggunakan golang untuk menulis halaman web. Berikut adalah beberapa kaedah yang agak mudah untuk menulis halaman web dalam golang.

2.1 Edisi Asas

Kod berikut menunjukkan cara mencipta pelayan web mudah dan pengendali HTTP dalam pustaka standard golang.

package main

import (
    "fmt"
    "net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

Akses http://localhost:8080/ pada penyemak imbas dan anda akan melihat output "Hello World". Walaupun mudah, ini juga merupakan halaman web asas yang boleh memaparkan maklumat tetap. Anda boleh mengeluarkan maklumat lain dengan mengubah suai kandungan fmt.Fprint(w, ...) dalam fungsi pengendali.

2.2 Versi templat

Jika anda ingin menjana halaman html yang lebih kompleks, anda boleh menggunakan templat golang. Pustaka standard Golang mengandungi pakej yang sepadan, yang boleh digunakan dengan mudah.

Terdapat dua cara:

1 Gunakan pakej teks/templat

package main

import (
    "html/template"
    "log"
    "net/http"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        p := Person{"Amy", 20}
        tmpl, err := template.New("").Parse(`
            <html>
                <head>
                <title>Hello World</title>
                </head>
                <body>
                <h1>Hello World!</h1>
                <ul>
                    <li>Name: {{.Name}} </li>
                    <li>Age : {{.Age}} </li>
                </ul>
                </body>
            </html>
        `)
        if err != nil {
            log.Fatalf("Failed to parse template: %v", err)
        }
        if err := tmpl.Execute(w, p); err != nil {
            log.Printf("Failed to execute template: %v", err)
        }
    })

    if err := http.ListenAndServe(":8080", nil); err != nil {
        log.Fatalf("Failed to listen and serve: %v", err)
    }
}

Dalam contoh ini kami mentakrifkan struktur Orang untuk menghantar data. Dalam fungsi pemprosesan, halaman html dijana melalui pakej teks/templat dan Nama dan Umur Orang adalah output. Lawati http://localhost:8080/ dalam penyemak imbas anda untuk melihat output.

2. Gunakan pakej html/template

package main

import (
    "html/template"
    "log"
    "net/http"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        p := Person{"Amy", 20}
        tmpl, err := template.ParseFiles("views/index.html")
        if err != nil {
            log.Fatalf("Failed to parse template: %v", err)
        }
        if err := tmpl.Execute(w, p); err != nil {
            log.Printf("Failed to execute template: %v", err)
        }
    })

    if err := http.ListenAndServe(":8080", nil); err != nil {
        log.Fatalf("Failed to listen and serve: %v", err)
    }
}

Sama seperti contoh di atas, kami mentakrifkan struktur Orang. Dalam fungsi pemprosesan, pakej html/template digunakan untuk menjana halaman html, tetapi dalam contoh ini kita menggunakan fungsi ParseFiles untuk membaca fail html untuk penghuraian templat. Pendekatan ini lebih modular dan akan menjadikan penyelenggaraan kemudian lebih mudah.

  1. Menggunakan pakej templat pihak ketiga

Menggunakan templat dalam perpustakaan golang di atas agak menyusahkan kerana anda perlu menulis kod templat dengan tangan, tetapi jika anda menggunakan pakej templat pihak ketiga secara langsung , yang boleh mengelakkan kod html tulisan tangan.

Yang berikut menunjukkan penggunaan pakej templat pihak ketiga "https://github.com/gobuffalo/plush":

3.1 Pemasangan

Pemasangan pakej bergantung

go get github.com/gobuffalo/plush

3.2 Tulis templat

Dalam direktori akar, buat fail views/index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>golang html demo</title>
</head>
<body>
    <div>
        <span>Name: {{.Name}}</span>
        <p>Age: {{.Age}}</p>
    </div>
</body>
</html>

3.3 Tulis fungsi pemprosesan

func handler(w http.ResponseWriter, r *http.Request) {
    p := map[string]interface{}{"Name": "Robert", "Age": 23}
    t, err := plush.RenderFile("views/index.html", p)
    if err != nil {
        w.WriteHeader(http.StatusInternalServerError)
        w.Write([]byte(fmt.Sprintf("Error rendering template: %s", err)))
        return
    }
    w.Write([]byte(t))
}

Dalam direktori akar , cipta fail main.go dan kemudian tulis kod.

  1. Nota

Apabila membangun menggunakan rangka kerja web golang, anda perlu memberi perhatian kepada perkara berikut:

4.1 ciri penyelarasan goroutine

Golang menggunakan goroutine untuk mencapai konkurensi, yang juga merupakan salah satu ciri bahasa golang. Walau bagaimanapun, dalam pembangunan rangka kerja web, anda perlu memberi perhatian untuk menggunakan kaedah konkurensi yang betul untuk mengelakkan konflik sumber dan isu persaingan. Teknologi kunci dan teknologi saluran boleh digunakan untuk kawalan. Teknologi kunci adalah terutamanya untuk melindungi data yang dikongsi, manakala teknologi saluran adalah untuk menyelaraskan interaksi antara berbilang coroutine.

4.2 Memperkenalkan perpustakaan lain

Apabila menggunakan golang untuk menulis dan membangunkan aplikasi web, kadangkala kami perlu memperkenalkan perpustakaan pihak ketiga untuk meningkatkan aplikasi kami. Sebelum menggunakan perpustakaan ini, kod dan prestasinya perlu disemak dengan teliti untuk memastikan kebolehpercayaan dan kestabilan aplikasi.

4.3 Nyahpepijat

Dalam proses pembangunan aplikasi web, nyahpepijat merupakan bahagian yang tidak dapat dielakkan. Untuk meningkatkan kebolehbacaan dan kebolehskalaan kod semasa penyahpepijatan kod, anda boleh menggunakan alatan sistem seperti log untuk memberikan gesaan. Pustaka standard golang juga menyediakan alatan seperti web/httptest.

  1. Kesimpulan

Secara amnya, rangka kerja web golang mempunyai prestasi dan kesederhanaan yang kukuh, walaupun perbezaan utama daripada rangka kerja lain ialah pemprosesan serentak. Dengan menggunakan rangka kerja web golang, anda boleh meningkatkan kecekapan dan kestabilan semasa membangunkan aplikasi web. Dengan menggunakan golang untuk menulis halaman web, kedua-dua senario aplikasi dan kecekapan kod boleh memudahkan pembangun merealisasikan idea mereka. Secara khusus, kami boleh menggunakan perpustakaan standard, pakej templat pihak ketiga dan perpustakaan lain, dengan memberi perhatian kepada kaveat yang dinyatakan.

Atas ialah kandungan terperinci Bolehkah golang menulis laman web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn