[Go Lang] lập trình golang căn bản - Xây dựng ứng dụng web đầu tiên
Trong bài viết này, Tôi sẽ hướng dẫn xây dựng một trang web sử dụng golang và html/css đơn giản. Bạn cần cài đặt golang nếu bạn chưa cài đặt thì có thể cài đặt tại đây https://golang.org/doc/install hoặc xem lại hướng dẫn cài đặt p1 Vào trong thư mục src của go Tạo một thư mục welcome-app. mkdir ...
Trong bài viết này, Tôi sẽ hướng dẫn xây dựng một trang web sử dụng golang và html/css đơn giản. Bạn cần cài đặt golang nếu bạn chưa cài đặt thì có thể cài đặt tại đây https://golang.org/doc/install hoặc xem lại hướng dẫn cài đặt p1
Vào trong thư mục src của go
Tạo một thư mục welcome-app.
mkdir welcome-app
cd welcome-app
Cấu trúc thư mục của bạn sẽ trông giống như thế này
/ home / <your-username> / go bin / src / / welcome-app
Tạo một thư mục templates trong ~/go/src/welcome-app để lưu trữ các file html
mkdir templates
Tạo một thư mục stylesheets trong ~/go/src/welcome-app/static để lưu trữ các file css, js..
mkdir -p static/stylesheets
Tạo file html welcome-template.html trong templates
Tạo file html welcome-template.css trong static/stylesheets
Thư mục của bạn sẽ trông giống như thế này.
- HTML: templates/welcome-template.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="/static/stylesheets/welcome-template.css"> <title>Welcome {{.Name}}</title> </head> <body> <div class="welcome center">Welcome {{.Name}}, it is {{.Time}}</div> </body> </html>
2.CSS: static/stylesheets/welcome-template.css
.welcome { font-family: 'Segoe UI', 'Tahoma', 'Geneva', 'Verdana', 'sans-serif'; font-size: 3rem; color: aliceblue; } .center { height: 100vh; display: flex; justify-content: center; align-items: center }
tạo file main.go
package main import ( "fmt" "html/template" "net/http" "time" ) type Welcome struct { Name string Time string } func main() { welcome := Welcome{"Anonymous", time.Now().Format(time.Stamp)} templates := template.Must(template.ParseFiles("templates/welcome-template.html")) http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) http.HandleFunc("/" , func(w http.ResponseWriter, r *http.Request) { if name := r.FormValue("name"); name != "" { welcome.Name = name; } if err := templates.ExecuteTemplate(w, "welcome-template.html", welcome); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } }) // Start web server, và sét cổng 8080 fmt.Println("Listening"); fmt.Println(http.ListenAndServe(":8080", nil)); }
Giải thích chút nhé ! chỗ này là để import các pakages cần thiết
import ( "fmt" "html/template" "net/http" "time" )
Tạo dữ liệu struct với 2 biến là name và time
type Welcome struct { Name string Time string }
khởi tạo struct welcome với 2 giá trị Name và Time ngẫu nhiên
welcome := Welcome{"Anonymous", time.Now().Format(time.Stamp)}
gọi đến dướng dẫn chứa file html, gọi trong hàm template.Must() khi chương trình lỗi sẽ dừng chương trình lại
templates := template.Must(template.ParseFiles("templates/welcome-template.html"))
sử dụng handle để lấy file css trong static
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
phương thức có URL "/" Và trả về ResponseWriter và http request
http.HandleFunc("/" , func(w http.ResponseWriter, r *http.Request) {
lấy tên từ URL với url http://127.0.0.1:8080/?name=Thinh thì r.FormValue("name") sẽ có giá trị là "Thinh"
if name := r.FormValue("name"); name != "" { welcome.Name = name; }
Nếu lỗi sẽ hiển thị error message, thành công sẽ trả về welcome-template.html
if err := templates.ExecuteTemplate(w, "welcome-template.html", welcome); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) }
Start web server, và sét cổng 8080
fmt.Println(http.ListenAndServe(":8080", nil));
chạy lệnh tại thư mục project
go run main.go
bật trình duyệt truy câp vào http://localhost:8080?name=thinh và tận hưởng thành quả
Trên đây là hướng dẫn run 1 web golang cơ bản, bài sau mình sẽ hướng dẫn làm các chức năng đơn giản cho trang web. Cảm ơn các bạn đã đón đọc.