golang ist eine statisch typisierte Programmiersprache, die gleichzeitige Programmierung unterstützt. Es bietet eine hervorragende Leistung bei der Verarbeitung einer großen Anzahl gleichzeitiger Webanfragen und kann die Leistung problemlos skalieren. Viele Leute verwenden bei der Verwendung von Golang einige gängige Web-Frameworks wie Beego, Gin, Martini usw., aber wir können Golang-Webprogramme schreiben, ohne diese Frameworks überhaupt zu verwenden. Im Folgenden wird vorgestellt, wie Sie die Webentwicklung in Golang implementieren, ohne Frameworks von Drittanbietern zu verwenden.
Die Standardbibliothek von Golang hat einige http-bezogene Pakete wie net/http gekapselt. Mit diesem Paket können http-Clients und -Server implementiert werden. Das Folgende ist eine einfache http-Server-Implementierung:
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { fmt.Fprintf(w, "Hello World") }) http.ListenAndServe(":8080", nil) }
Legen Sie die Route über die Methode http.HandleFunc
fest, und die Parameter umfassen den Zugriffspfad und die Antwortverarbeitungsfunktion. Online-Anwendungen, die den TLS-Authentifizierungsmechanismus (Transport Layer Security) verwenden müssen, können die Methode http.ListenAndServeTLS()
verwenden. http.HandleFunc
方法来设置路由,参数包括访问路径和响应处理函数。线上应用需要使用TLS(Transport Layer Security)认证机制可以使用http.ListenAndServeTLS()
方法。
golang的标准库里面还有一个模板引擎template,是golang提供的一种模板渲染机制,他支持解析和执行行为定义在”{{}}”
内部的动作指令。通过这种方式能够很方便的将数据填充到指定的模板里面。
下面是一个使用template的示例:
package main import ( "html/template" "net/http" ) func main() { http.HandleFunc("/", viewHandler) http.ListenAndServe(":8080", nil) } func viewHandler(writer http.ResponseWriter, request *http.Request) { // 首先定义一个模板字符串 const myTemplateString = ` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{{.Title}}</title> </head> <body> {{if .IsUser}} <h1>Hello {{.UserName}}!</h1> {{else}} <h1>Hello guest!</h1> {{end}} </body> </html>` // 定义一个结构体,用于填充模板 type MyTemplateData struct { Title string // 页面标题 IsUser bool // 是否是已经登录的用户 UserName string // 用户名 } // 填充模板 t, err := template.New("myTemplateString").Parse(myTemplateString) if err != nil { panic(err) } data := MyTemplateData{ Title: "My Awesome Page", IsUser: true, UserName: "Gopher", } t.Execute(writer, data) }
这个例子中,首先定义了一个模板字符串,然后定义了一个结构体表示填充模板的数据。最后通过template.New方法解析模板,填充数据并将结果输出到浏览器。
golang也可以使用原生的sql包来操作MySQL等数据库。封装了sql.DB以支持连接池和线程安全。下面是一个使用golang原生sql包的示例:
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database") if err != nil { fmt.Println(err) } defer db.Close() // 查询数据库 rows, err := db.Query("SELECT * FROM users") if err != nil { fmt.Println(err) } defer rows.Close() for rows.Next() { var id int var name string err = rows.Scan(&id, &name) if err != nil { fmt.Println(err) } fmt.Printf("id: %d, name: %s ", id, name) } }
这个例子中使用sql.Open()
打开一个MySQL的链接,然后执行了一个查询语句SELECT * FROM users
“{{}}“
definiert ist. Auf diese Weise können Daten einfach in die angegebene Vorlage eingetragen werden. #🎜🎜##🎜🎜#Das Folgende ist ein Beispiel für die Verwendung einer Vorlage: #🎜🎜#rrreee#🎜🎜#In diesem Beispiel wird zuerst eine Vorlagenzeichenfolge definiert und dann wird eine Struktur definiert, um die Daten darzustellen, die die füllen Vorlage. Abschließend wird die Vorlage über die Methode template.New analysiert, die Daten werden ausgefüllt und die Ergebnisse werden an den Browser ausgegeben. #🎜🎜#sql.Open()
verwendet, um einen MySQL-Link zu öffnen und dann eine Abfrage auszuführen Anweisung SELECT * FROM users
, durchläuft mehrere Datensätze, die von der Abfrageergebnismenge über rows.Next() zurückgegeben werden. #🎜🎜##🎜🎜#Wie aus den obigen drei Beispielen ersichtlich ist, kann Golang die Webentwicklung auch ohne die Verwendung von Frameworks von Drittanbietern abschließen. Sie können je nach Bedarf die Bibliotheken finden, die Sie für die Webentwicklung benötigen. Beim Schreiben von Webprojekten empfiehlt es sich natürlich, ein Drittanbieter-Framework mit guter Kapselungs- und Dokumentationsunterstützung zu verwenden. Schließlich ist ein Drittanbieter-Framework aus Prozess- und Effizienzsicht bequemer und effizienter. #🎜🎜#Das obige ist der detaillierte Inhalt vonGolang erfordert kein Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!