DevGang
Авторизоваться

Освоение веб-разработки на Go: создание Flashcard приложения

Этот проект предоставит ценную информацию о возможностях и передовых методах веб-разработки Go, независимо от того, являетесь ли вы новичком или опытным разработчиком.

К концу этой серии вы получите прочную основу для веб-разработки на Go и будете готовы создавать собственные веб-приложения.

Установка

Сначала мы должны установить Go для выбранной вами операционной системы. Я использую WSL (Windows Subsystem for Linux) в Windows, и у меня нет проблем, следуя инструкциям официальной документации.

Мы предполагаем, что вы используете версию go > 1.16, поэтому модули включены по умолчанию (ссылка).

Настройка проекта

Примечание: Я следую соглашению из этого репозитория для структуры проекта.

Создайте папку и инициализируйте проект

mkdir flashcard-go
cd flashcard-go
go mod init github.com/<your_username>/flashcard-go

Это должно было создать файл go.mod. Этот файл имеет имя модуля и версию Go. Модуль идентифицируется путем к модулю, который объявлен в файле go.mod вместе с информацией о зависимостях модуля. Как правило, путь к модулю состоит из корневого пути репозитория, каталога в репозитории (обычно пустого) и суффикса основной версии (только для основной версии 2 или выше) (ссылка).

Программная архитектура проекта

Существует множество программных архитектур и шаблонов, модель-представление-контроллер (MVC), клиент-сервер, микросервисы, многоуровневые, шестиугольные (порты и адаптеры) и другие. В нашем случае я выбираю шестиугольный подход. Это излишество, не обязательно и непрактично для нашего маленького проекта, но это широко используется, и мы можем многому у него научиться.

Наши точки входа будут внутри папки cmd. Здесь у нас может быть несколько точек входа (например, отдельное веб-приложение от cli), и вы можете держать всех в своей папке (для целей тестирования). Содержимое файлов внутри этой команды не должно использоваться другими частями веб-приложения.

Первое, что мы собираемся сделать, это отделить ядро от нашего исходного кода. Начиная с версии Go 1.4 команда go вводит механизм для определения «internal» пакетов, которые не могут быть импортированы пакетами за пределами исходного поддерева, в котором они находятся. Чтобы создать такой пакет, поместите его в каталог с именем «internal» или в подкаталог каталога с именем «internal» (ссылка).

flashcard-app/
├─ cmd/
│  ├─ web/
│  │  ├─ // Main entry point
│  ├─ cli/
│  │  ├─ // Possibly another entry point
├─ internal/
│  ├─ // Business Logic
├─ site/
│  ├─ // Front End

Определение бизнеса

Цель приложения

Это веб-приложение поможет пользователям создавать викторины с помощью карточек. Пользователи могут создавать, просматривать, редактировать и удалять карточки и викторины. Основная цель — предоставить пользователям простой и интуитивно понятный интерфейс для создания образовательных викторин.

Определите основные бизнес-концепции

  • Flashcard: отдельная карта, используемая для обучения. Каждая карточка содержит вопрос и соответствующий ему ответ.
  • Quiz: набор из нескольких карточек, организованных для проверки знаний пользователя по определенным темам. У викторины должно быть название, описание и набор карточек.

Типовые бизнес-правила и отношения

  • На карточке должен быть непустой вопрос и ответ.
  • Карточки связаны с викторинами (отношение «многие к одному»), что означает, что несколько карточек могут принадлежать к одной и той же викторине.
  • Викторина должна иметь непустой заголовок.
  • Викторина должна иметь непустое описание.
  • Викторина может иметь ноль или более карточек, связанных с ней (отношение «один ко многим»).

Сущности

  • Flashcard
  • Quiz

Варианты использования

Мы упростим эту вещь и добавим эти возможные варианты использования.

  1. Создание, редактирование и удаление карточек
  2. Создание, редактирование и удаление викторины
  3. Прохождение викторины: пользователи могут пройти викторину, и приложение представит вопрос каждой карточки один за другим, позволяя пользователям ответить
  4. Прохождение викторины: пользователи могут пройти викторину, и приложение представит вопрос каждой карточки один за другим, позволяя пользователям ответить

Начать кодирование

Оставайтесь с нами, пока мы углубляемся в реализацию гексагональной архитектуры, организуем структуру проекта и воплощаем в жизнь наше «Приложение Flashcard Quiz» используя язык программирования Go!

Источник:

#Golang
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу