Недавно получив некоторые базовые знания о Го, я решил попрактиковаться. Поскольку личный блог является относительно распространенным и относительно простым примером контакта, он предназначен для преломления спроса и создания относительно простого личного блога, чтобы понять основы использования языка GO в веб-сервисе.
Рассмотрим функционал, который необходимо реализовать
Упрощенная версия личного блога, отвечающая основным потребностям.
- Есть способ управлять
md
файловый инструмент, который конвертирует локальныеmd
Файл, то есть написанный блог, можно загрузить на сервер, либо файл статьи можно удалить по названию статьи. Инструмент имитируетhexo
Пусть система блога будет командной строкой, простой и прямой. - Web Front-End Page: 1. Есть домашняя страница для отображения всех статей, здесь она существует в виде списка. 2. Каждый элемент в списке имеет основную информацию статьи, такую как: заголовок, время загрузки, количество слов в статье и т. Д. 3. Страница контента статьи. 4. Поддержка классификации и извлечения тегов соответствующих статей.
- Веб-сервер: 1. Предоставьте запрос всем статьям в соответствии с классификацией.
ID
Запрос списка статей на основе теговID
API-интерфейсы запросов, такие как списки статей. 2. Обеспечьтеmd
файл вHTML
Строковые функции представлены в последней форме интерфейса. 3. Получайте файлы и анализируйтеmd
Файл, соответствующая информация хранится в базе данных.
Вероятно, вся система состоит из трех разделов выше.
Принять режим разделения фронта и тыла
- задняя часть :
- Существует множество веб-фреймворков для языка Go, даже использующих встроенный
net/http
Также может быть удобнее писать веб-службы, поэтому выберите здесь более легкую и простую веб-инфраструктуру.gin
; - Поскольку бизнес базы данных очень мал, ей не нужно хранить большой объем релевантной информации, необходимо хранить только метку, название, классификацию и время статьи, поэтому легкая база данных используется напрямую.
Sqlite
База данных, напрямуюdb
файловое хранилище; - база данных
ORM
Инструменты, есть относительно популярны в Китаеxorm
, просто используйте его напрямую, документ очень полный, если он не работает, просто напишите его напрямуюsql
это тоже хорошо.
- Существует множество веб-фреймворков для языка Go, даже использующих встроенный
-
внешний интерфейс:
- В настоящее время более популярно создавать одностраничные приложения на фронтенде, я тоже фронтенд программист, поэтому использую те, с которыми знаком.
React
Чтобы построить его. -
UI
рамка, опциональноGoogle
изMaterial-ui
, я думаю, что это все еще красивоUI
библиотека.
- В настоящее время более популярно создавать одностраничные приложения на фронтенде, я тоже фронтенд программист, поэтому использую те, с которыми знаком.
-
Инструменты командной строки:
- Долго искал в гугле, есть и готовые библиотеки (cli)Можно использовать.
Инициализировать проект
- Сначала мы
$GOPATH/src/github.com/[your_name]/
Создаватьblog
Папка, назовем это так. Это не имеет значения~ -
Используя режим разделения front-end и back-end, я создаю здесь следующие папки:
- cmd используется для разработки инструментов командной строки
- контроллеры, используемые для хранения внутреннего контроллера, некоторых операций, некоторых функций. * База данных подключена к базе данных, хранящей операционную и конфигурационную базу данных.
- front_web используется для хранения
React
проект. - Модели хранятся и используются
xorm
Шаблоны, соответствующие таблицам базы данных (некоторые структуры данных Struct) - Так как посты — это относительно простая система, я напрямую помещаю статьи, загруженные клиентом, в эту папку.
- внутренний интерфейс маршрутизатора (маршрутизация)
- статическая веб-статическая папка
- Главный вход Главная.
-
использовать
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/
можно получить доступ, хотя сейчас ничего нет.
-
Наконец
Пример проекта написан и размещен вgithub
Up, это только первое, используемое для введения функции и того, как инициализировать проект. Всем в сообщении обсудить или уйтимой гитхабПерейдите к проекту клона и запустите его напрямую, чтобы увидеть его. Затем продолжайте обновлять, проблемы, возникшие в середине, и некоторые решения.