Rumah > Artikel > pembangunan bahagian belakang > Bolehkah golang menulis laman web?
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.
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:
1.2 Beego
Beego ialah rangka kerja aplikasi web peringkat perusahaan ciri berbeza daripada Gin:
1.3 Revel
Revel ditulis golang bergantung pada Rangka kerja Web Netty (pelayan web berprestasi tinggi) , dengan ciri berikut:
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.
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.
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.
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.
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!