Maison > Article > développement back-end > Golang peut-il écrire des pages Web ?
Avec le développement continu de la technologie Web, les pages Web sont devenues un outil important de diffusion d'informations et d'interaction. Dans ce processus, diverses technologies sont également nées, notamment la montée en puissance des langages JavaScript côté serveur tels que SNode.js.
Cependant, de nombreux développeurs peuvent être curieux, le golang, un langage utilisé pour le développement back-end, peut-il être utilisé pour écrire des pages Web ? La réponse est oui. Dans cet article, nous présenterons comment Golang prend en charge le développement Web, ainsi que les méthodes et précautions d'utilisation de Golang pour écrire des pages Web.
Comme d'autres langages bas de gamme, golang lui-même n'est pas un langage spécifiquement utilisé pour le développement Web, mais il peut être utilisé avec des frameworks Web pour le développement Web. Voici quelques frameworks Web Golang courants :
1.1 Gin
Actuellement, Gin est devenu le framework Web préféré de nombreux développeurs Golang. Il présente les caractéristiques suivantes :
1.2 Beego
Beego est un framework d'application Web de niveau entreprise, ses caractéristiques sont différentes de Gin :
1.3 Revel
Revel est un framework Web Golang écrit en s'appuyant sur Netty (un serveur Web hautes performances) et présente les caractéristiques suivantes :
Les différentes caractéristiques des trois frameworks Web ci-dessus peuvent répondre à différents types de besoins d'applications Web, les développeurs peuvent en fonction à choisir en fonction de vos besoins réels.
Après avoir compris le framework Web Golang, nous pouvons commencer à apprendre à utiliser Golang pour écrire des pages Web. Voici quelques méthodes relativement simples pour écrire des pages Web en Golang.
2.1 Basic Edition
Le code suivant montre comment créer un serveur Web simple et un gestionnaire HTTP dans la bibliothèque standard de 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) }
Visitez http://localhost:8080/
sur le navigateur et vous verrez la sortie "Hello World". Bien que simple, il s’agit également d’une page Web de base pouvant afficher un message fixe. Vous pouvez afficher d'autres informations en modifiant le contenu de fmt.Fprint(w, ...)
dans la fonction de gestionnaire. http://localhost:8080/
,会看到输出"Hello World"。虽然简单,但这也是一个基础版的网页,可以展示一个固定的信息。可以通过修改handler函数中fmt.Fprint(w, ...)
的内容来输出其他信息。
2.2 模板版
如果要生成更复杂的html页面,可以使用golang模板。golang的标准库中包含了相应的包,可以很方便的使用。
有两种方式:
1.使用text/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.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) } }
这个例子中我们定义了一个Person结构体,用于传递数据。在处理函数中,就是通过text/template包生成了一个html页面,将Person的Name和Age输出。在浏览器中访问http://localhost:8080/
,看看输出的结果。
2.使用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) } }
和上例一样,我们定义了一个Person结构体。在处理函数中,使用了html/template包生成了一个html页面,但这个例子中我们使用了ParseFiles函数读取一个html文件用于模板解析。这样的方式处理更加模块化,后期的维护也会更加方便。
使用上面的golang库中的模板还是挺麻烦的,因为需要手写模板代码,但如果直接使用第三方模板包,可避免手写html代码。
下面演示使用第三方模板包“https://github.com/gobuffalo/plush”:
3.1 安装
安装依赖包
go get github.com/gobuffalo/plush
3.2 写模板
在根目录下,创建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 写处理函数
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)) }
在根目录下,创建一个main.go
rrreee
Dans cet exemple, nous définissons une structure Personne pour transmettre des données. Dans la fonction de traitement, une page HTML est générée via le package texte/modèle et le nom et l'âge de la personne sont affichés. Visitezhttp://localhost:8080/
dans le navigateur et consultez le résultat. 2. Utilisez le package html/template rrreee
Comme dans l'exemple ci-dessus, nous définissons une structure Person. Dans la fonction de traitement, le package html/template est utilisé pour générer une page html, mais dans cet exemple, nous utilisons la fonction ParseFiles pour lire un fichier html pour l'analyse du modèle. Cette approche est plus modulaire et rendra la maintenance ultérieure plus pratique.Il est assez difficile d'utiliser les modèles de la bibliothèque golang ci-dessus car vous devez écrire à la main le code du modèle, mais si vous utilisez le troisième -party template package directement, vous pouvez éviter d’écrire à la main du code HTML.
🎜Ce qui suit montre l'utilisation du package de modèles tiers "https://github.com/gobuffalo/plush": 🎜🎜3.1 Installer 🎜🎜Installer les packages de dépendances 🎜rrreee🎜3.2 Écrire un modèle 🎜🎜Dans le répertoire racine, créezviews /index.html
Fichier :🎜rrreee🎜3.3 Fonction de traitement d'écriture🎜rrreee🎜Dans le répertoire racine, créez un fichier main.go
et écrivez le code. 🎜🎜🎜Notes🎜🎜🎜Lors du développement à l'aide du framework Web golang, vous devez faire attention aux points suivants : 🎜🎜4.1 Fonctionnalités de simultanéité de goroutine 🎜🎜golang utilise goroutine pour obtenir la concurrence, qui est également l'une des caractéristiques de golang langue. Cependant, lors du développement de frameworks Web, vous devez veiller à utiliser des méthodes de concurrence correctes pour éviter les conflits de ressources et les problèmes de concurrence. La technologie de verrouillage et la technologie des canaux peuvent être utilisées pour le contrôle. La technologie de verrouillage vise principalement à protéger les données partagées, tandis que la technologie de canal consiste à coordonner l'interaction entre plusieurs coroutines. 🎜🎜4.2 Présentation d'autres bibliothèques🎜🎜Lorsque nous utilisons Golang pour écrire et développer des applications Web, nous devons parfois introduire des bibliothèques tierces pour améliorer nos applications. Avant d'utiliser ces bibliothèques, leur code et leurs performances doivent être soigneusement vérifiés pour garantir la fiabilité et la stabilité de l'application. 🎜🎜4.3 Débogage🎜🎜Dans le processus de développement d'applications Web, le débogage est une partie inévitable. Pour améliorer la lisibilité et l'évolutivité du code lors du débogage du code, vous pouvez utiliser des outils système tels que le journal pour fournir des invites. La bibliothèque standard Golang fournit également des outils tels que web/httptest. 🎜En général, le framework Web Golang a de fortes performances et une simplicité, bien que la principale différence par rapport aux autres frameworks soit le traitement simultané. En utilisant le framework Web Golang, vous pouvez améliorer l'efficacité et la stabilité lors du développement d'applications Web. En utilisant Golang pour écrire des pages Web, les scénarios d'application et l'efficacité du code peuvent permettre aux développeurs de concrétiser plus facilement leurs idées. Plus précisément, nous pouvons utiliser la bibliothèque standard, des packages de modèles tiers et d'autres bibliothèques, en prêtant attention aux mises en garde notées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!