[Go Lang] lập trình golang căn bản - Xây dựng ứng dụng web đầu tiên
Bài đăng này đã không được cập nhật trong 5 năm
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
Bước 1: Thiết lập cấu trúc thư mục
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
Bước 2: Xây dựng giao diện người dùng
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
}
Bước 3: xây dựng Go server
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));
Bước 4: Chạy chương trình
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ả
kết bài
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.
All rights reserved
Bình luận
Hay