Dalam beberapa tahun kebelakangan ini, bahasa Go (pendek kata golang) telah beransur-ansur menjadi kegemaran dalam bidang pembangunan web kerana kecekapan, kesederhanaan dan keselamatannya. Golang mudah dipelajari dan digunakan serta mempunyai pangkalan perpustakaan dan rangka kerja yang besar. Artikel ini akan memperkenalkan cara menggunakan golang untuk membina aplikasi web, termasuk tetapan penghalaan, pemprosesan templat, ORM, dsb.
Bahasa Go ialah bahasa tersusun, yang dipengaruhi oleh bahasa C dan bahasa Pascal Ia mempunyai penaipan statik, pengumpulan sampah, pengaturcaraan serentak dan Pengaturcaraan tak segerak dan ciri lain. Pustaka standard Golang menyediakan pelbagai fungsi, termasuk rangkaian, penyulitan dan penyahsulitan, input dan output, dan banyak lagi. Selain itu, model konkurensi Golang mempunyai kelebihan unik, menjadikannya sangat sesuai untuk bidang pembangunan web.
Membina aplikasi Web menggunakan Golang memerlukan komponen berikut:
Seterusnya kami akan menggunakan rangka kerja Gin untuk mencipta aplikasi web mudah dan memperkenalkan cara komponen di atas digunakan di dalamnya.
Pertama, kita perlu memasang rangka kerja Gin menggunakan arahan berikut:
go get -u github.com/gin-gonic/gin
Arahan ini akan memuat turun Rangka kerja Gin daripada kod sumber Github dan pasangkannya ke dalam direktori $GOPATH/src/github.com/gin-gonic/gin.
Mencipta laluan ialah langkah penting dalam aplikasi web kerana ia mentakrifkan pemetaan antara URL dan fungsi pemprosesan yang sepadan.
Dalam contoh ini, kami akan mencipta dua laluan:
Dalam fail main.go, kami boleh mentakrifkan dua laluan ini:
package main import ( "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "Welcome to our website!", }) }) r.GET("/hello", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "Hello there!", }) }) r.Run(":8080") }
Untuk mencipta laluan, kami menggunakan fungsi Default() rangka kerja Gin untuk mencipta enjin pemprosesan Laluan lalai, dan kemudian gunakan fungsi GET() pada enjin penghalaan untuk menentukan laluan.
Kini kami telah mencipta dua laluan dan fungsi pemprosesan yang sepadan, tetapi nilai pulangan fungsi ini ialah data dalam format JSON, bukan halaman.
Untuk membenamkan data ini ke dalam halaman HTML, kita perlu menggunakan enjin templat. Golang mempunyai banyak enjin templat yang berbeza untuk dipilih, termasuk teks/templat asal Go dan html/templat, serta perpustakaan pihak ketiga.
Dalam contoh ini, kami akan menggunakan Templat Gin perpustakaan pihak ketiga. Untuk melakukan ini, kita perlu mencipta direktori templat dan mencipta dua fail templat welcome.html dan hello.html di dalamnya:
$ mkdir templates $ cd templates $ touch welcome.html hello.html
Dalam dua fail templat ini, kami akan menggunakan enjin templat bahasa go ( {{.}}
) Benamkan pembolehubah yang sepadan ke dalam halaman HTML. Dalam welcome.html kami akan menambah halaman selamat datang yang ringkas:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Welcome to our website!</title> </head> <body> <h1>Welcome to our website!</h1> </body> </html>
Dalam hello.html kami akan menambah satu lagi halaman mudah:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hello there!</title> </head> <body> <h1>Hello there!</h1> </body> </html>
Sekarang kami Kami bersedia untuk menggunakan Templat Gin untuk membenamkan kedua-dua fail templat ini ke dalam fungsi pemprosesan penghalaan kami.
Dalam fail main.go, kami akan menambah kod berikut:
import ( "net/http" ) // ... func main() { r := gin.Default() // 模板设置 r.LoadHTMLGlob("templates/*") r.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "welcome.html", gin.H{ "title": "Welcome", }) }) r.GET("/hello", func(c *gin.Context) { c.HTML(http.StatusOK, "hello.html", gin.H{ "title": "Hello", }) }) r.Run(":8080") }
Di sini, kami menggunakan fungsi LoadHTMLGlob() yang disediakan oleh rangka kerja Gin untuk memuatkan fail templat. Kemudian, dalam fungsi pemprosesan penghalaan, kami menggunakan fungsi c.HTML() untuk menggabungkan fail templat dan data yang sepadan bersama-sama untuk memaparkan halaman.
Dalam aplikasi web, data perlu disimpan dalam peranti storan yang berterusan. ORM (Pemetaan Hubungan Objek) ialah alat yang membolehkan pembangun memetakan jadual dan data dalam pangkalan data kepada objek dan kelas dalam atur cara.
Dalam contoh ini, kami akan menggunakan perpustakaan ORM gorm untuk menyambung ke pangkalan data dan melaksanakan operasi CRUD (Buat, Baca, Kemas Kini dan Padam).
Pertama, kita perlu memasang perpustakaan gorm menggunakan arahan berikut:
go get -u github.com/jinzhu/gorm
Seterusnya, kita boleh menggunakan perpustakaan gorm untuk melaksanakan pelbagai operasi pangkalan data dalam program. Sebagai contoh, kita boleh mencipta struct bernama User dan menyimpannya dalam pangkalan data:
import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) type User struct { gorm.Model Name string Age int } // ... func main() { // 连接MySQL数据库 db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local") if err != nil { panic("failed to connect database") } defer db.Close() // 创建数据库表 db.AutoMigrate(&User{}) // 新增一条数据 db.Create(&User{Name: "张三", Age: 30}) }
Di sini kita mencipta struct bernama User dan menggunakan AutoMigrate perpustakaan Gorm Fungsi () mencipta jadual bernama pengguna dalam pangkalan data. Kami kemudian menambah pengguna baharu pada pangkalan data menggunakan fungsi db.Create().
Dalam artikel ini, kami memperkenalkan cara membuat aplikasi web menggunakan Golang. Kami menggunakan Gin sebagai rangka kerja web dan menggunakan enjin templat Gin Templae untuk memaparkan halaman HTML. Kami juga menggunakan perpustakaan Gorm ORM untuk menyambung ke pangkalan data dan melaksanakan pelbagai operasi CRUD.
Ciri bahasa Go yang ringan, cekap dan selamat menjadikannya pilihan terbaik untuk pembangunan web. Pembangunan web menjadi lebih mudah dan cekap menggunakan Golang dan rangka kerja serta perpustakaan yang sepadan.
Atas ialah kandungan terperinci Cara membina aplikasi web menggunakan golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!