Skip to content

Latest commit

 

History

History
419 lines (321 loc) · 24.4 KB

README_RU.md

File metadata and controls

419 lines (321 loc) · 24.4 KB

gowebly – CLI-инструмент нового поколения для создания удивительных веб-приложений на языке Go с использованием htmx и hyperscript

Go version Go report Code coverage License

English | Русский | 中文 | Español

С помощью этого CLI-инструмента можно легко создавать удивительные веб-приложения с Go на стороне бэкенда, с использованием htmx, hyperscript и наиболее популярных атомарных/утилитарных CSS-фреймворков на стороне фронтенда.

Особенности:

  • 100% свободный и открытый исходный код под лицензией Apache 2.0;
  • Для любого уровня знаний и технической экспертизы разработчика;
  • Хорошо документирован, содержит множество советов и подсказок от авторов;
  • Умный CLI, который делает большую часть рутинной настройки и подготовки к продакшену;
  • Помогает быстрее войти в стек технологий Go + htmx + hyperscript;
  • Возможность простого добавления в свой проект готового к использованию и полностью настроенного атомарного/утилитарного CSS-фреймворка;
  • Поддерживает режим live-reloading для ваших CSS стилей;
  • Имеет библиотеку удобных функций для вашего Go-кода;
  • Содержит исчерпывающий пример использования из коробки.

💬 От авторов: Чтобы дать вам полное представление о проекте, мы записали короткое 📺 видео и подготовили вводную 📝 статью, демонстрирующую основные возможности gowebly CLI.

gowebly logo

⚡️ Быстрый старт

Сначала скачайте и установите Go. Требуется версия 1.21 (или выше).

Теперь вы можете использовать gowebly без установки. Просто запустите go run, который создаст новый проект с конфигурацией по умолчанию:

go run github.com/gowebly/gowebly@latest create

Вот и все! 🔥 Замечательное веб-приложение, использующее встроенный пакет net/http (в качестве Go-бэкенда), htmx и hyperscript — доступны в ваших HTML-шаблонах Go.

🔹 Полный путь к быстрому старту на Go

Если вы все же хотите установить gowebly CLI в свою систему средствами Golang, воспользуйтесь командой go install:

go install github.com/gowebly/gowebly@latest

🍺 Быстрый старт с Homebrew

Пользователям GNU/Linux и Apple macOS доступен способ установки gowebly CLI через Homebrew.

Тапните новую формулу:

brew tap gowebly/tap

Установите gowebly:

brew install gowebly/tap/gowebly

🐳 Быстрый старт с Docker

Вы можете использовать gowebly CLI из нашего официального Docker-образа и запускать его в изолированном контейнере:

docker run --rm -it -v ${PWD}:${PWD} -w ${PWD} gowebly/gowebly:latest create

📦 Другой путь для быстрого старта

Скачать готовые exe файлы для Windows, пакеты deb, rpm, apk или Arch Linux — можно на странице Releases.

📖 Полное руководство пользователя

Чтобы получить полное руководство по использованию и понять основные принципы работы gowebly CLI, мы подготовили исчерпывающее объяснение каждой команды в этом файле README.

💬 От авторов: Мы всегда ценим ваше время и хотим, чтобы вы как можно скорее начали создавать действительно замечательные веб-продукты на этом потрясающем технологическом стеке!

Мы надеемся, что вы найдете ответы на все вопросы! 👌 Но если вы не нашли нужной информации, не стесняйтесь создать issue или отправить PR в этот репозиторий.

init

Команда создания дефолтного файла конфигурации (.gowebly.yml) в текущей папке.

gowebly init

💡 Примечание: Конечно, вы можете пропустить этот шаг, если вас устраивает следующая конфигурация по умолчанию для вашего нового проекта:

  • Имена модулей Go (go.mod) и package.json установлены, как project;
  • Без Go-фреймворка для backend-части (только встроенный пакет net/http);
  • Без CSS-фреймворка для frontend-части (только стили по умолчанию для примера кода);
  • Среда выполнения JavaScript для frontend-части будет использовать Node.js;
  • Порт сервера – 5000, таймаут (в секундах): 5 для чтения, 10 для записи;
  • Последние версии htmx и hyperscript.
gowebly init

Как правило, созданный файл конфигурации содержит следующие настройки:

backend:
   module_name: project # (string) option can be any name of your Go module (for example, 'github.com/user/project')
   go_framework: default # (string) option can be one of the values: 'fiber', 'echo', 'chi', or 'default'
   port: 5000 # (int) option can be any port that is not taken up on your system
   timeout:
      read: 5 # (int) option can be any number of seconds, 5 is recommended
      write: 10 # (int) option can be any number of seconds, 10 is recommended

frontend:
   package_name: project # (string) option can be any name of your package.json (for example, 'project')
   css_framework: default # (string) option can be one of the values: 'tailwindcss', 'unocss', or 'default'
   runtime_environment: default # (string) option can be one of the values: 'bun', or 'default'
   htmx: latest # (string) option can be any existing version
   hyperscript: latest # (string) option can be any existing version

Но вы можете выбрать любой другой Go-фреймворк для бэкенда вашего проекта:

Go-фреймворк Описание
default Без какого-либо Go-фреймворка (только встроенный пакет net/http)
fiber Использовать Fiber веб-фреймворк в качестве бэкенда
echo Использовать Echo веб-фреймворк в качестве бэкенда
chi Использовать композитный роутер chi в качестве бэкенда

Кроме того, вы можете выбрать для своего проекта версии htmx, hyperscript, а также один из самых популярных атомарных/утилитарных CSS-фреймворков:

CSS-фреймворк Описание
default Без какого-либо CSS-фреймворка (только стили по умолчанию для примера кода)
tailwindcss Использовать Tailwind CSS в качестве CSS-фреймворка
unocss Использовать UnoCSS в качестве CSS-фреймворка

А также, вы можете выбрать другую среду выполнения JavaScript для frontend-части:

Среда выполнения JavaScript Описание
default Использовать Node.js в качестве среды выполнения JavaScript
bun Использовать Bun в качестве среды выполнения JavaScript

create

Команда для создания нового проекта с бэкендом Go, htmx и hyperscript, а также (опционально) атомарным/утилитарным CSS-фреймворком.

gowebly create

💡 Примечание: Если не выполнить команду init для создания файла конфигурации (.gowebly.yml), то gowebly CLI создает новый проект с конфигурацией по умолчанию.

gowebly create

Каждый раз, когда вы выполняете команду create для своего проекта:

  1. CLI проверяет конфигурацию и применяет все настройки к текущему проекту;
  2. CLI подготавливает backend-часть проекта (генерирует структуру проекта и необходимые файлы, запускает go mod tidy);
  3. CLI подготавливает frontend-часть проекта (генерирует необходимые файлы, запускает npm|bun install и npm|bun run build:dev в первый раз);
  4. CLI скачивает минимизированные версии htmx и hyperscript (с официального и надежного CDN unpkg.com) в папку ./static и размещает их в виде разделенных тегов <script> (внизу тега <body>) в HTML-шаблоне Go templates/main.html.

Как правило, созданный проект содержит следующие файлы и папки:

.
├── assets
│   └── styles.css
├── static
│   ├── favicon.ico
│   ├── htmx.min.js
│   ├── hyperscript.min.js
│   └── styles.css
├── templates
│   ├── pages
│   │   └── index.html
│   └── main.html
├── .gitignore
├── go.mod
├── go.sum
├── handlers.go
├── main.go
├── package-lock.json
├── package.json
└── server.go

run

Команда для запуска проекта в режиме разработки (непроизводственном).

gowebly run

💡 Примечание: Если не выполнить команду init для создания файла конфигурации (.gowebly.yml), то gowebly CLI запустит ваш проект с конфигурацией по умолчанию.

gowebly run

Каждый раз, когда вы выполняете команду run для своего проекта:

  1. CLI проверяет конфигурацию и применяет все настройки к текущему проекту;
  2. CLI подготавливает frontend-часть проекта (выполняется команда npm|bun run watch);
  3. CLI подготавливает версию для разработки (непроизводственную) выбранного CSS-фреймворка в папке ./static и размещает ее в виде тега <link> (внизу тега <head>) в HTML-шаблоне Go templates/main.html;
  4. CLI запускает бэкенд проекта с настройками из конфигурации по умолчанию (или из конфигурационного файла .gowebly.yml) простой командой go run.

build

Команда для сборки проекта для продакшена и подготовки Docker-файлов для развертывания.

gowebly build [OPTION]

💡 Примечание: Если не выполнить команду init для создания конфигурационного файла (.gowebly.yml), то gowebly CLI собирает проект с конфигурацией по умолчанию.

gowebly build

Вы можете добавить следующие опции:

Название опции Описание Обязательно?
--skip-docker Пропустить процесс генерации Docker-файлов (полезно, если у вас есть свои собственные) Нет

Каждый раз, когда вы выполняете команду build для своего проекта:

  1. CLI проверяет конфигурацию и применяет все настройки к текущему проекту;
  2. CLI подготавливает версию для разработки (непроизводственную) выбранного CSS-фреймворка в папке ./static и размещает ее в виде тега <link> (внизу тега <head>) в HTML-шаблоне Go templates/main.html;
  3. CLI подготавливает продакшен-версию выбранного CSS-фреймворка и размещает ее в виде тега <link> (в нижней части тега <head>) в шаблоне Go HTML templates/main.html;
  4. Если опция --skip-docker не была задана, CLI генерирует в корне папки проекта понятные и хорошо документированные Docker-файлы (.dockerignore, Dockerfile, docker-compose.yml) для развертывания проекта в изолированных контейнерах через Portainer (рекомендуется), или вручную, на удаленном сервере.

🙋 Удобные функции

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

go get -u github.com/gowebly/helpers

💡 Примечание: Библиотека gowebly helpers уже включена в Go-бэкенд, создаваемый командой create, но вы можете использовать эти функции и в любых других проектах.

🎯 Мотивация к созданию

Скажите, как часто вам приходилось начинать новый проект с нуля и выполнять мучительные ручные настройки? 🤔 Особенно, когда вы только начинаете своё знакомство с новой технологией или стеком, где все для вас в новинку.

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

Почему бы просто не отдать всю эту ужасную ручную работу машинам? Пусть они сделают всю тяжелую работу за нас, а мы будем просто создавать потрясающие веб-продукты и не думать о сборке и развертывании.

Именно поэтому мы создали gowebly CLI и библиотеку удобных функций, которые помогут вам создавать потрясающие веб-приложения на Go с использованием htmx, hyperscript и популярных атомарных/утилитарных CSS-фреймворков.

Мы здесь, чтобы избавить вас (и себя) от этой рутинной боли! ✨

💬 От авторов: Ранее, мы уже спасали мир — это был Create Go App (да, это тоже наш проект). Статистика GitHub stars этого проекта не может врать: более 2,2 тыс. разработчиков любого уровня и из разных стран начинают новый проект с помощью этого CLI-инструмента.

🏆 Взаимовыгодное сотрудничество

Если вам понравился проект gowebly и вы нашли его полезным для своих задач, пожалуйста, поставьте ему 🌟 GitHub Star и нажмите 👁️ Watch, чтобы не пропустить уведомления о выходе новых версий!

gowebly star and watch

А теперь я приглашаю вас принять участие в этом проекте! Давайте работать вместе, чтобы создать самый полезный инструмент для разработчиков в Интернете на сегодня.

  • Issues: задавайте вопросы и предлагайте свои улучшения.
  • Pull requests: присылайте свои улучшения.

Ваши PR и вопросы приветствуются! Спасибо 😘

🌟 Звездные люди

gowebly stargazers

⚠️ Лицензия

gowebly — это свободное программное обеспечение с открытым исходным кодом, лицензируемое по Apache 2.0 лицензии, созданное и поддерживаемое Vic Shóstak с 🩵 к людям и роботам. Официальный логотип распространяется под лицензией Creative Commons (CC BY-SA 4.0 International).