Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Amalan pembangunan Beego - daripada penerbitan blog ke pusat membeli-belah dalam talian

Amalan pembangunan Beego - daripada penerbitan blog ke pusat membeli-belah dalam talian

王林
王林asal
2023-06-23 10:58:451076semak imbas

Beego ialah rangka kerja pembangunan web berdasarkan bahasa Go. Ia mudah digunakan, cekap, stabil dan pembangunan pesat ia digemari dan digunakan oleh semakin ramai pembangun. Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja Beego daripada menerbitkan blog kepada membina pusat membeli-belah dalam talian.

1. Penerbitan blog

  1. Pemasangan dan konfigurasi Beego

Pertama, kita perlu memasang dan mengkonfigurasi rangka kerja Beego dalam persekitaran setempat. Anda boleh memasangnya melalui arahan berikut:

go get -u github.com/astaxie/beego
go get -u github.com/beego/bee

Selepas pemasangan selesai, cipta projek baharu melalui arahan baharu lebah, seperti berikut:

bee new blog

Dalam projek yang dijana, app.conf dalam folder konfigurasi Fail ialah fail konfigurasi utama Beego, di mana kita boleh mengkonfigurasi port, pangkalan data, log, dll.

  1. Menulis kod

Dalam projek yang dijana, fail dalam folder pengawal ialah kod pengawal Beego, di mana kita boleh menulis logik perniagaan yang kita perlukan. Sebagai contoh, kita perlu mencipta model dan pengawal blog:

// models/blog.go
type Blog struct {
    Id int
    Title string
    Content string
    Created time.Time
}

// controllers/blog.go
type BlogController struct {
    beego.Controller
}

func (this *BlogController) Get() {
    // 查询所有博客并渲染到页面
    blogs := models.GetAllBlogs()
    this.Data["blogs"] = blogs
    this.TplName = "blog.tpl"
}

func (this *BlogController) Post() {
    // 新建一篇博客
    title := this.GetString("title")
    content := this.GetString("content")

    blog := models.Blog{
        Title:   title,
        Content: content,
        Created: time.Now(),
    }

    models.AddBlog(&blog)

    this.Redirect("/blog", 302)
}

Dalam kod di atas, kami mencipta model Blog, dan melaksanakan logik untuk mendapatkan semua blog dan menambah blog baharu dalam pengawal.

  1. Lihat pemaparan

Beego menggunakan enjin templat bahasa Go untuk melaksanakan paparan paparan biasanya disimpan dalam folder paparan. Dalam contoh ini, kita boleh mencipta fail blog.tpl dan memaparkan halaman untuk memaparkan senarai blog dan borang untuk menambah blog baharu:

<!DOCTYPE html>
<html>
<head>
    <title>Blog</title>
</head>
<body>
    <h1>All Blogs</h1>
    {{range .blogs}}
        <h2>{{.Title}}</h2>
        <p>{{.Content}}</p>
        <p>{{.Created}}</p>
    {{end}}
    <h1>New Blog</h1>
    <form method="post" action="/blog">
        <label>Title:</label>
        <input type="text" name="title"/><br/>
        <label>Content:</label>
        <textarea name="content"></textarea>
        <br/>
        <input type="submit" name="submit" value="Submit"/>
    </form>
</body>
</html>

Antaranya, pernyataan {{range .blogs}} digunakan untuk menjadikan semua blog dalam gelung, pernyataan {{.Title}}, {{.Content}}, {{.Created}} digunakan untuk memberikan maklumat blog tertentu.

  1. Jalankan program

Sebelum menjalankan program, anda perlu mencipta atau mengkonfigurasi pangkalan data Anda boleh menetapkan maklumat sambungan pangkalan data dalam fail app.conf. Selepas melengkapkan konfigurasi, gunakan arahan berikut untuk menjalankan program:

bee run

Lawati localhost:8080/blog dalam pelayar untuk melihat senarai blog.

2. Pusat beli-belah dalam talian

Selain fungsi penerbitan blog, kami juga boleh menggunakan rangka kerja Beego untuk membangunkan pusat membeli-belah dalam talian. Di bawah adalah contoh mudah.

  1. Pemasangan dan konfigurasi Beego

Begitu juga, kita perlu memasang dan mengkonfigurasi rangka kerja Beego dalam persekitaran setempat terlebih dahulu Dalam contoh ini, kita menggunakan arahan berikut untuk memasang ia:

go get github.com/astaxie/beego
go get github.com/beego/bee

Dan buat projek baharu melalui arahan baharu lebah:

bee new shop

Dalam projek yang dijana, fail app.conf dalam folder konfigurasi ialah fail konfigurasi utama Beego. Kita boleh mengkonfigurasi port, pangkalan data, log, dan lain-lain di dalamnya.

  1. Menulis kod

Dalam projek yang dijana, fail dalam folder pengawal ialah kod pengawal Beego, di mana kita boleh menulis logik perniagaan yang kita perlukan.

// models/goods.go
type Goods struct {
    Id int
    Name string
    Price float64
    Created time.Time
}

// controllers/default.go
type MainController struct {
    beego.Controller
}

func (c *MainController) Get() {
    c.Data["Website"] = "myshop"
    c.Data["Email"] = "myshop@gmail.com"
    c.TplName = "index.tpl"
}

type GoodsController struct {
    beego.Controller
}

func (this *GoodsController) Add() {
    name := this.GetString("name")
    price, _ := this.GetFloat("price", 0.0)

    goods := models.Goods{
        Name:      name,
        Price: price,
        Created: time.Now(),
    }

    models.AddGoods(&goods)

    this.Redirect("/", 302)
}

func (this *GoodsController) GetAll() {
    goods := models.GetAllGoods()
    this.Data["json"] = &goods
    this.ServeJSON()
}

Dalam kod di atas, kami mencipta model Barangan dan melaksanakan logik untuk mendapatkan semua produk dan menambah produk baharu dalam pengawal. Logik untuk memaparkan halaman utama dilaksanakan dalam MainController.

  1. Operasi Pangkalan Data

Apabila menambah dan mendapatkan produk, kita perlu menyambung ke pangkalan data, yang boleh dicapai melalui ORM Beego sendiri. Cipta fail database.go baharu dalam folder model untuk memulakan sambungan pangkalan data:

package models

import (
    "github.com/astaxie/beego/orm"
    _ "github.com/go-sql-driver/mysql"
)

func RegisterDB() {
    orm.RegisterDriver("mysql", orm.DRMySQL)
    orm.RegisterDataBase("default", "mysql", "root:@tcp(127.0.0.1:3306)/shop?charset=utf8", 30)
}

Apabila menambah produk baharu dan mendapatkan produk, kita boleh mencapai ini melalui kod berikut:

func AddGoods(goods *Goods) (int64, error) {
    if err := orm.NewOrm().Read(&goods); err == nil {
        return 0, errors.New("Goods already exists")
    }
    id, err := orm.NewOrm().Insert(goods)
    return id, err
}

func GetAllGoods() []*Goods {
    var goods []*Goods
    orm.NewOrm().QueryTable("goods").All(&goods)
    return goods
}
  1. Paparan paparan

Beego menggunakan enjin templat bahasa Go untuk melaksanakan paparan paparan biasanya disimpan dalam folder paparan. Dalam contoh ini, kita boleh mencipta fail index.tpl untuk memaparkan halaman utama pusat beli-belah dalam talian:

<!DOCTYPE html>
<html>
<head>
    <title>{{.Website}}</title>
</head>
<body>
    <h1>Welcome to {{.Website}}!</h1>
    <h2>Add Goods:</h2>
    <form action="/goods/add" method="post">
        <input type="text" name="name">
        <input type="number" name="price" step="0.01">
        <input type="submit" value="Add">
    </form>
    <h2>All Goods:</h2>
    <table border="1">
        <tr>
            <td>Id</td>
            <td>Name</td>
            <td>Price</td>
            <td>Created</td>
        </tr>
        {{range .goods}}
        <tr>
            <td>{{.Id}}</td>
            <td>{{.Name}}</td>
            <td>{{.Price}}</td>
            <td>{{.Created}}</td>
        </tr>
        {{end}}
    </table>
</body>
</html>

Antaranya, pernyataan {{range .goods}} digunakan untuk menjadikan semua produk dalam satu gelung.

  1. Jalankan program

Selepas selesai menulis kod dan templat, gunakan arahan berikut untuk memulakan atur cara:

bee run

Lawati localhost:8080 dalam pelayar , anda boleh melihat halaman utama pusat membeli-belah dalam talian, menambah produk dan melihat semua produk. Anda boleh menjana fail boleh laku serba lengkap dengan menjalankan arahan berikut:

bee pack

Di atas ialah proses praktikal lengkap menggunakan rangka kerja Beego daripada menerbitkan blog ke pusat membeli-belah dalam talian. Saya harap ia akan membantu pembangun yang sedang mempelajari Beego.

Atas ialah kandungan terperinci Amalan pembangunan Beego - daripada penerbitan blog ke pusat membeli-belah dalam talian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn