Beego開発実践 - ブログ公開からオンラインモールまで

王林
リリース: 2023-06-23 10:58:45
オリジナル
1051 人が閲覧しました

Beego は Go 言語をベースにした Web 開発フレームワークで、使いやすく、効率的で、安定性が高く、迅速な開発が可能であり、ますます多くの開発者に好まれて使用されています。この記事では、ブログの公開からオンラインモールの構築まで、Beegoフレームワークの使い方を紹介します。

1. ブログ リリース

  1. Beego のインストールと構成

まず、ローカル環境に Beego フレームワークをインストールして構成する必要があります。次のコマンドを使用してインストールできます:

go get -u github.com/astaxie/beego
go get -u github.com/beego/bee
ログイン後にコピー

インストールが完了したら、次のように bee new コマンドを使用して新しいプロジェクトを作成します:

bee new blog
ログイン後にコピー

生成されたプロジェクトで、app.conf config フォルダー内 このファイルは Beego のメイン構成ファイルで、ポート、データベース、ログなどを構成できます。

  1. コードの記述

生成されたプロジェクトでは、controllers フォルダー内のファイルが 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 フレームワークをインストールして構成する必要があります。この例では、次のコマンドを使用してインストールします。 :

go get github.com/astaxie/beego
go get github.com/beego/bee
ログイン後にコピー

そして、bee new コマンドで新しいプロジェクトを作成します:

bee new shop
ログイン後にコピー

生成されたプロジェクトでは、config フォルダー内の app.conf ファイルが Beego のメイン構成ファイルです。ポート、データベース、ログなどを設定できます。

  1. コードの記述

生成されたプロジェクトでは、controllers フォルダー内のファイルが Beego のコントローラー コードであり、ここに必要なビジネス ロジックを記述することができます。

// 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()
}
ログイン後にコピー

上記のコードでは、グッズ モデルを作成し、すべての商品を取得し、コントローラーに新しい商品を追加するロジックを実装しました。ホームページを表示するロジックはMainControllerに実装されています。

  1. データベース操作

製品を追加および取得するときは、データベースに接続する必要があります。これは、Beego 独自の ORM を通じて実現できます。 models フォルダーに新しい database.go ファイルを作成して、データベース接続を初期化します。

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)
}
ログイン後にコピー

新しい製品を追加して製品を取得する場合、次のコードを通じてこれを実現できます:

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. View rendering

Beego は Go 言語テンプレート エンジンを使用してビュー レンダリングを実装します。ビュー ファイルは通常、views フォルダーに保存されます。この例では、オンライン モールのホームページを表示するためのindex.tpl ファイルを作成できます。

<!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>
ログイン後にコピー

このうち、{{range .goods}} ステートメントは、ループ内ですべての商品をレンダリングするために使用されます。

  1. プログラムの実行

コードとテンプレートの作成が完了したら、次のコマンドを使用してプログラムを開始します:

bee run
ログイン後にコピー
ログイン後にコピー

Visit localhost:8080 inブラウザで、オンライン モールのホームページを表示し、商品を追加し、すべての商品を表示できます。次のコマンドを実行すると、自己完結型の実行可能ファイルを生成できます:

bee pack
ログイン後にコピー

上記は、ブログをオンライン モールに公開するまで、Beego フレームワークを使用する完全な実践的なプロセスです。 Beego を学習している開発者。

以上がBeego開発実践 - ブログ公開からオンラインモールまでの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!