> 백엔드 개발 > Golang > 비고 개발실습 - 블로그 퍼블리싱부터 온라인몰까지

비고 개발실습 - 블로그 퍼블리싱부터 온라인몰까지

王林
풀어 주다: 2023-06-23 10:58:45
원래의
1107명이 탐색했습니다.

Beego는 Go 언어를 기반으로 한 웹 개발 프레임워크로, 사용하기 쉽고 효율적이며 안정적이며 빠르게 개발되며 점점 더 많은 개발자들이 선호하고 사용하고 있습니다. 이번 글에서는 블로그 게시부터 온라인 쇼핑몰 구축까지 Beego 프레임워크를 활용하는 방법을 소개하겠습니다.

1. 블로그 출시

  1. Beego 설치 및 구성

먼저 로컬 환경에 Beego 프레임워크를 설치하고 구성해야 합니다. 다음 명령어를 통해 설치할 수 있습니다.

go get -u github.com/astaxie/beego
go get -u github.com/beego/bee
로그인 후 복사

설치가 완료된 후 다음과 같이 bee new 명령어를 통해 새 프로젝트를 생성합니다.

bee new blog
로그인 후 복사

생성된 프로젝트에서 config 폴더에 있는 app.conf 파일은 Beego의 것입니다. 기본 구성 파일에서 포트, 데이터베이스, 로그 등을 구성할 수 있습니다.

  1. 코드 작성

생성된 프로젝트에서 컨트롤러 폴더에 있는 파일은 Beego의 컨트롤러 코드이며, 여기서 필요한 비즈니스 로직을 작성할 수 있습니다. 예를 들어 블로그 모델과 컨트롤러를 생성해야 합니다.

// 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)
}
로그인 후 복사

위 코드에서는 블로그 모델을 생성하고 컨트롤러에 모든 블로그를 가져오고 새 블로그를 추가하는 로직을 구현합니다.

  1. 뷰 렌더링

Beego는 Go 언어 템플릿 엔진을 사용하여 뷰 렌더링을 구현합니다. 일반적으로 뷰 파일은 views 폴더에 저장됩니다. 이 예에서는 blog.tpl 파일을 생성하고 페이지를 렌더링하여 블로그 목록과 새 블로그 추가 양식을 표시할 수 있습니다.

<!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>
로그인 후 복사

그 중 {{range .blogs}} 문은 모든 블로그를 렌더링하는 데 사용됩니다. 루프에서 {{.Title }}, {{.Content}}, {{.Created}} 문은 특정 블로그 정보를 렌더링하는 데 사용됩니다.

  1. 프로그램 실행

프로그램을 실행하기 전에 데이터베이스를 생성하거나 구성해야 합니다. app.conf 파일에서 데이터베이스 연결 정보를 설정할 수 있습니다. 구성을 완료한 후 다음 명령을 사용하여 프로그램을 실행합니다.

bee run
로그인 후 복사
로그인 후 복사

블로그 목록을 보려면 브라우저에서 localhost:8080/blog를 방문하세요.

2. 온라인 몰

블로그 게시 기능 외에도 Beego 프레임워크를 사용하여 온라인 몰을 개발할 수도 있습니다. 다음은 간단한 예입니다.

  1. Beego 설치 및 구성

마찬가지로 먼저 로컬 환경에 Beego 프레임워크를 설치하고 구성해야 합니다. 이 예에서는 다음 명령을 사용하여 설치하고 bee를 통해 새 프로젝트를 만듭니다. 새 명령 :

go get github.com/astaxie/beego
go get github.com/beego/bee
로그인 후 복사

생성된 프로젝트에서 config 폴더에 있는 app.conf 파일이 Beego의 기본 구성 파일입니다. 포트, 데이터베이스, 로그 등을 구성할 수 있습니다.

코드 작성
  1. 생성된 프로젝트에서 컨트롤러 폴더에 있는 파일은 Beego의 컨트롤러 코드이며, 여기서 필요한 비즈니스 로직을 작성할 수 있습니다.
bee new shop
로그인 후 복사

위 코드에서는 Goods 모델을 생성하고 모든 제품을 획득하고 컨트롤러에 새 제품을 추가하는 로직을 구현했습니다. 홈페이지를 표시하는 로직은 MainController에서 구현됩니다.

데이터베이스 운영
  1. 제품을 추가하고 가져올 때 데이터베이스에 연결해야 하는데, 이는 Beego 자체 ORM을 통해 가능합니다. 데이터베이스 연결을 초기화하기 위해 모델 폴더에 새 Database.go 파일을 만듭니다.
// 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()
}
로그인 후 복사

새 제품을 추가하고 제품을 얻을 때 다음 코드를 통해 이를 달성할 수 있습니다.

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)
}
로그인 후 복사

View 렌더링
  1. Beego는 Go를 사용합니다. 언어 보기 렌더링을 구현하는 데 템플릿 엔진이 사용됩니다. 보기 파일은 일반적으로 보기 폴더에 저장됩니다. 이 예에서는 index.tpl 파일을 생성하여 온라인 쇼핑몰의 홈페이지를 표시할 수 있습니다.
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
}
로그인 후 복사

그 중 {{range .goods}} 문은 모든 제품을 루프로 렌더링하는 데 사용됩니다.

프로그램 실행
  1. 코드 및 템플릿 작성이 완료되면 다음 명령어를 사용하여 프로그램을 시작합니다.
<!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>
로그인 후 복사

브라우저에서 localhost:8080에 접속하시면 온라인몰 홈페이지 조회, 상품 추가, 전체 상품 확인이 가능합니다. 다음 명령을 실행하여 자체 실행 파일을 생성할 수 있습니다.

bee run
로그인 후 복사
로그인 후 복사

위는 블로그 게시부터 온라인 쇼핑몰에 게시까지 Beego 프레임워크를 사용하는 전체 실제 과정입니다. 학습 중인 개발자에게 도움이 되기를 바랍니다. 비고.

위 내용은 비고 개발실습 - 블로그 퍼블리싱부터 온라인몰까지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿