Создание персонального блога, используя Go (1): проект по инициализации

задняя часть база данных Go внешний интерфейс
Создание персонального блога, используя Go (1): проект по инициализации

Недавно получив некоторые базовые знания о Го, я решил попрактиковаться. Поскольку личный блог является относительно распространенным и относительно простым примером контакта, он предназначен для преломления спроса и создания относительно простого личного блога, чтобы понять основы использования языка GO в веб-сервисе.

Рассмотрим функционал, который необходимо реализовать

Упрощенная версия личного блога, отвечающая основным потребностям.

  • Есть способ управлятьmdфайловый инструмент, который конвертирует локальныеmdФайл, то есть написанный блог, можно загрузить на сервер, либо файл статьи можно удалить по названию статьи. Инструмент имитируетhexoПусть система блога будет командной строкой, простой и прямой.
  • Web Front-End Page: 1. Есть домашняя страница для отображения всех статей, здесь она существует в виде списка. 2. Каждый элемент в списке имеет основную информацию статьи, такую ​​как: заголовок, время загрузки, количество слов в статье и т. Д. 3. Страница контента статьи. 4. Поддержка классификации и извлечения тегов соответствующих статей.
  • Веб-сервер: 1. Предоставьте запрос всем статьям в соответствии с классификацией.IDЗапрос списка статей на основе теговIDAPI-интерфейсы запросов, такие как списки статей. 2. Обеспечьтеmdфайл вHTMLСтроковые функции представлены в последней форме интерфейса. 3. Получайте файлы и анализируйтеmdФайл, соответствующая информация хранится в базе данных.

Вероятно, вся система состоит из трех разделов выше.

Принять режим разделения фронта и тыла

  • задняя часть :
    • Существует множество веб-фреймворков для языка Go, даже использующих встроенныйnet/httpТакже может быть удобнее писать веб-службы, поэтому выберите здесь более легкую и простую веб-инфраструктуру.gin;
    • Поскольку бизнес базы данных очень мал, ей не нужно хранить большой объем релевантной информации, необходимо хранить только метку, название, классификацию и время статьи, поэтому легкая база данных используется напрямую.SqliteБаза данных, напрямуюdbфайловое хранилище;
    • база данныхORMИнструменты, есть относительно популярны в Китаеxorm, просто используйте его напрямую, документ очень полный, если он не работает, просто напишите его напрямуюsqlэто тоже хорошо.
  • внешний интерфейс:

    • В настоящее время более популярно создавать одностраничные приложения на фронтенде, я тоже фронтенд программист, поэтому использую те, с которыми знаком.ReactЧтобы построить его.
    • UIрамка, опциональноGoogleизMaterial-ui, я думаю, что это все еще красивоUIбиблиотека.
  • Инструменты командной строки:

    • Долго искал в гугле, есть и готовые библиотеки (cli)Можно использовать.

Инициализировать проект

  1. Сначала мы$GOPATH/src/github.com/[your_name]/СоздаватьblogПапка, назовем это так. Это не имеет значения~
  2. Используя режим разделения front-end и back-end, я создаю здесь следующие папки:

    • cmd используется для разработки инструментов командной строки
    • контроллеры, используемые для хранения внутреннего контроллера, некоторых операций, некоторых функций. * База данных подключена к базе данных, хранящей операционную и конфигурационную базу данных.
    • front_web используется для храненияReactпроект.
    • Модели хранятся и используютсяxormШаблоны, соответствующие таблицам базы данных (некоторые структуры данных Struct)
    • Так как посты — это относительно простая система, я напрямую помещаю статьи, загруженные клиентом, в эту папку.
    • внутренний интерфейс маршрутизатора (маршрутизация)
    • статическая веб-статическая папка
    • Главный вход Главная.

    我的目录

    1. использоватьginСоздаватьHttpСлужить:

      • использоватьgetинструмент, воляginЗависимости устанавливаются локально,Джин документ

        go get github.com/gin-gonic/gin
      • существуетmian.goимпортировать вgin, а затем создайте службу.

        package main

        import (
        "io"
        "os"

        "github.com/gin-gonic/gin"
        )

        func main() {
        r := gin.New()

        // 设置日志文件
        f, _ := os.Create("gin.log")
        gin.DefaultWriter = io.MultiWriter(f, os.Stdout)
        // 使用日志中间件
        r.Use(gin.Logger())
        // 设置静态文件夹
        r.Static("/static", "./static")

        r.Run(":8888")
        }
      • запустить этоmain.goфайл, вы можете увидеть информацию о запуске, а затем ввести в браузереhttp://localhost:8888/можно получить доступ, хотя сейчас ничего нет.

Наконец

Пример проекта написан и размещен вgithubUp, это только первое, используемое для введения функции и того, как инициализировать проект. Всем в сообщении обсудить или уйтимой гитхабПерейдите к проекту клона и запустите его напрямую, чтобы увидеть его. Затем продолжайте обновлять, проблемы, возникшие в середине, и некоторые решения.