gowebly – CLI-инструмент нового поколения для создания удивительных веб-приложений на языке Go с использованием htmx и hyperscript
English | Русский | 中文 | Español
С помощью этого CLI-инструмента можно легко создавать удивительные веб-приложения с Go на стороне бэкенда, с использованием htmx, hyperscript и наиболее популярных атомарных/утилитарных CSS-фреймворков на стороне фронтенда.
Особенности:
- 100% свободный и открытый исходный код под лицензией Apache 2.0;
- Для любого уровня знаний и технической экспертизы разработчика;
- Хорошо документирован, содержит множество советов и подсказок от авторов;
- Умный CLI, который делает большую часть рутинной настройки и подготовки к продакшену;
- Помогает быстрее войти в стек технологий Go + htmx + hyperscript;
- Возможность простого добавления в свой проект готового к использованию и полностью настроенного атомарного/утилитарного CSS-фреймворка;
- Поддерживает режим live-reloading для ваших CSS стилей;
- Имеет библиотеку удобных функций для вашего Go-кода;
- Содержит исчерпывающий пример использования из коробки.
💬 От авторов: Чтобы дать вам полное представление о проекте, мы записали короткое 📺 видео и подготовили вводную 📝 статью, демонстрирующую основные возможности
gowebly
CLI.
Сначала скачайте и установите Go. Требуется версия
1.21
(или выше).
Теперь вы можете использовать gowebly
без установки. Просто запустите
go run
, который создаст новый проект с
конфигурацией по умолчанию:
go run github.com/gowebly/gowebly@latest create
Вот и все! 🔥 Замечательное веб-приложение, использующее встроенный пакет net/http (в качестве Go-бэкенда), htmx и hyperscript — доступны в ваших HTML-шаблонах Go.
Если вы все же хотите установить gowebly
CLI в свою систему средствами
Golang, воспользуйтесь командой go install
:
go install github.com/gowebly/gowebly@latest
Пользователям GNU/Linux и Apple macOS доступен способ установки gowebly
CLI через Homebrew.
Тапните новую формулу:
brew tap gowebly/tap
Установите gowebly
:
brew install gowebly/tap/gowebly
Вы можете использовать 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 в этот репозиторий.
Команда создания дефолтного файла конфигурации
(.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.
Как правило, созданный файл конфигурации содержит следующие настройки:
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 |
Команда для создания нового проекта с бэкендом Go, htmx и hyperscript, а также (опционально) атомарным/утилитарным CSS-фреймворком.
gowebly create
💡 Примечание: Если не выполнить команду
init
для создания файла конфигурации (.gowebly.yml
), тоgowebly
CLI создает новый проект с конфигурацией по умолчанию.
Каждый раз, когда вы выполняете команду create
для своего проекта:
- CLI проверяет конфигурацию и применяет все настройки к текущему проекту;
- CLI подготавливает backend-часть проекта (генерирует структуру проекта и
необходимые файлы, запускает
go mod tidy
); - CLI подготавливает frontend-часть проекта (генерирует необходимые файлы,
запускает
npm|bun install
иnpm|bun run build:dev
в первый раз); - CLI скачивает минимизированные версии htmx и hyperscript (с
официального и надежного CDN unpkg.com) в папку
./static
и размещает их в виде разделенных тегов<script>
(внизу тега<body>
) в HTML-шаблоне Gotemplates/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
Команда для запуска проекта в режиме разработки (непроизводственном).
gowebly run
💡 Примечание: Если не выполнить команду
init
для создания файла конфигурации (.gowebly.yml
), тоgowebly
CLI запустит ваш проект с конфигурацией по умолчанию.
Каждый раз, когда вы выполняете команду run
для своего проекта:
- CLI проверяет конфигурацию и применяет все настройки к текущему проекту;
- CLI подготавливает frontend-часть проекта (выполняется команда
npm|bun run watch
); - CLI подготавливает версию для разработки (непроизводственную) выбранного
CSS-фреймворка в папке
./static
и размещает ее в виде тега<link>
(внизу тега<head>
) в HTML-шаблоне Gotemplates/main.html
; - CLI запускает бэкенд проекта с настройками из конфигурации по умолчанию
(или из конфигурационного файла
.gowebly.yml
) простой командойgo run
.
Команда для сборки проекта для продакшена и подготовки Docker-файлов для развертывания.
gowebly build [OPTION]
💡 Примечание: Если не выполнить команду
init
для создания конфигурационного файла (.gowebly.yml
), тоgowebly
CLI собирает проект с конфигурацией по умолчанию.
Вы можете добавить следующие опции:
Название опции | Описание | Обязательно? |
---|---|---|
--skip-docker |
Пропустить процесс генерации Docker-файлов (полезно, если у вас есть свои собственные) | Нет |
Каждый раз, когда вы выполняете команду build
для своего проекта:
- CLI проверяет конфигурацию и применяет все настройки к текущему проекту;
- CLI подготавливает версию для разработки (непроизводственную) выбранного
CSS-фреймворка в папке
./static
и размещает ее в виде тега<link>
(внизу тега<head>
) в HTML-шаблоне Gotemplates/main.html
; - CLI подготавливает продакшен-версию выбранного CSS-фреймворка и
размещает ее в виде тега
<link>
(в нижней части тега<head>
) в шаблоне Go HTMLtemplates/main.html
; - Если опция
--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, чтобы не
пропустить уведомления о выходе новых версий!
А теперь я приглашаю вас принять участие в этом проекте! Давайте работать вместе, чтобы создать самый полезный инструмент для разработчиков в Интернете на сегодня.
- Issues: задавайте вопросы и предлагайте свои улучшения.
- Pull requests: присылайте свои улучшения.
Ваши PR и вопросы приветствуются! Спасибо 😘
gowebly
— это свободное программное обеспечение с открытым
исходным кодом, лицензируемое по Apache 2.0 лицензии,
созданное и поддерживаемое Vic Shóstak с 🩵 к людям и роботам.
Официальный логотип распространяется под
лицензией Creative Commons (CC BY-SA 4.0 International).