Гид по Golang : список основных фреймворков, IDE и инструментов

Гид по Golang : список основных фреймворков, IDE и инструментов

Practical.DEV

Популярность языка программирования Google Go (Golang) растет с момента его появления. В декабре 2016 года 89% из 3595 респондентов заявили, что они программируют на Go на работе или в свободное время. В июле 2017 года Go занимает 10-е место по версии Tiobe’s Programming Language of the Year поднявшись с 55-го места.

Go привлекает многих программистов различных направлений и специалистов по разработке ПО на аутсорсинге. С уверенностью можно сказать, что это связано с простотой использования Go. Будучи компилируемым языком программирования с открытым исходным кодом, он позволяет разработчикам создавать простое, надежное и эффективное программное обеспечение. Go – это продукт инноваций и эволюции более консервативных языков, таких как C и С++.

Количество вводимого кода на языке Go меньше, что позволяет писать надежные API без ущерба для его производительности. Возможно проведение оптимизации, поскольку Go разработан с упором на масштабируемость и параллелизм. Компилятор может выполнить всю проверку кода до его выполнения.

Мы составили список лучших фреймворков, интегрированных сред разработки (IDE) и инструментов для Golang.

Фреймворки для Golang

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

1. Revel

В качестве высокопроизводительной платформы для Go Revel включает в себя инструмент перезагрузки горячего кода (Hot Code Reload), который позволяет перестраивать проект при каждом изменении файла. Он также имеет широкий спектр комплексных и высокопроизводительных функций, поэтому вам не нужно искать внешние библиотеки для интеграции в фреймворк.

2. Beego

Beego – это полноценная платформа MVC с собственной библиотекой журналирования, ORM и веб-фреймворками. Нет нужды искать и устанавливать сторонние библиотеки. Платформа оснащена встроенным инструментом Bee Tool, который следит за изменениями кода и выполняет задачи при обнаружении изменений.
Beego сэкономит вам много часов, особенно в начале проекта, когда вы определяете фреймворк ведения журнала или структуру приложения.

3. Martini

По примеру Sinatra, Martini – чрезвычайно легкий и мощный фреймфорк (прим. Sinatra — фреймворк, написанный на языке Ruby). Он был разработан для написания модульных веб-приложений и сервисов в Golang.

Martini отличают неинтрузивные конструкции, которые легки и быстры в использовании и включают в себя широкий диапазон обработчиков и промежуточное программное обеспечение. Он способен выполнять базовую маршрутизацию, обработку исключений и обслуживание стандартных документов для приложений AngularJS в режиме HTML5.

Особенностью Martini является использование рефлексии, которая позволяет разработчикам динамически вставлять данные в функции обработчика и добавлять новые сервисы. Martini также полностью совместим с интерфейсом http.HandlerFunc. Однако основным недостатком является тот факт, что фреймворк больше не поддерживаются.

4. Gin Gonic

Gin Gonic – это веб-фреймворк с API-интерфейсом похожим на Martini, но с гораздо лучшей производительностью. Если вы использовали Martini раньше, то Gin Gonic покажется вам знакомым. В противном случае, изучение займет всего 10 минут.

Gin Gonic – это минималистичный фреймворк, который включает в себя только самые необходимые библиотеки и функции, что делает его идеальным для разработки высокопроизводительных API REST. Кроме того, он в 40 раз быстрее, чем Martini.

Вы можете добавить промежуточное ПО, вложенные группы, проверку JSON и рендеринг, но он все равно сохранит оптимальную производительность. Gin Gonic использует httprouter, являющийся самым быстрым http-маршрутизатором для Go.

5. Buffalo

С Buffalo создание новых веб-приложений Go происходит быстро и просто. Когда вы начинаете новый проект, он уже все установил для вас — от фронтэнд до бэкэнд разработки.

Buffalo имеет горячую перезагрузку (Hot Reloading), это значит, что командная строка разработчика будет следить за вашими .go и .html файлами автоматически. Затем он перестроит и перезапустит ваш двоичный файл. Просто запустите командную строку разработчика, и вы сразу увидите изменения!

Buffalo – это не просто фреймворк, а целостная эко-система веб-разработки, которая позволяет сразу приступить к созданию вашего приложения.

6. Goji

Goji – это легкий и быстрый веб-фреймворк, у которого в приоритете композиционность и простота. Очень похожий на net/http.ServeMux, Goji является минималистичным мультиплексором HTTP-запросов. Он включает в себя поддержку Einhorn, что позволяет поддерживать веб-сокеты.

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

7. Tiger Tonic

Навеянный Dropwizard, Tiger Tonic – это фреймворк Go для разработки веб-сервисов JSON и создания высокопроизводительных API REST (прим. Dropwizard – это Java-фреймворк, позволяющий создавать RESTful веб-сервисы). Tiger Tonic стремится сохранить особенности ортогональности, чтобы остаться верным принципам Golang,

Недостатком фреймворка является его неадекватность, когда дело доходит до создания больших фоновых приложений.

8. Gocraft

Еще один мощный, но минималистичный фреймворк Gocraft предлагает быструю и масштабируемую производительность маршрутизации. Он добавляет маршрутизацию в пакет net/http из стандартной библиотеки.

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

Поскольку производительность всегда является одной из главных проблем для разработчиков, Gocraft – отличный выбор. С его помощью легко писать бэкэнд веб-приложений.

9. Mango

Хоть Mango и слабо поддерживается его создателем, Полом Беллами (Paul Bellamy), многие пользователи Go все еще используют его. Самое замечательное в нем – это его модульность. У вас есть выбор из множества библиотек, которые вы можете добавить себе в проект.

Mango позволяет как можно быстрее и проще создавать многоразовые модули функциональности HTTP. Он компилирует список промежуточного программного обеспечения и приложения в один объект http-сервера для сохранения автономности вашего кода.





Интегрированные среды разработки для Golang

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

Если вы работаете над крупномасштабным проектом с обширном исходным кодом, IDE может помочь вам организовать его и обеспечит легкую навигацию по нему. Кроме того, она поможет протестировать код и соответствующим образом отредактировать его.

Далее представлены лучшие IDE, которые отлично работают с Golang.

1. Gogland

Компания по разработке программного обеспечения JetBrains выпустила еще одну надежную IDE, но на этот раз для Golang. Gogland – это коммерческая среда разработки, которая обеспечивает надежную эргономичную среду для разработчиков Go. Ее преимущества – автодополнение, отладчик и встроенный терминал.

Поскольку IDE создана компанией JetBrains, она имеет обширную экосистему плагинов IntelliJ, в которой вы можете получить дополнительные инструменты.


2. Visual Studio Code

Visual Studio Code от компании Microsoft – это полнофункциональная IDE с открытым исходным кодом и редактором кода, поддерживающим широкий спектр языков программирования. Он оснащен: интеллектуальным автодополнением IntelliSense; отладкой с использованием точек остановок, стеков вызовов и интерактивной консоли; встроенной интеграцией Git; иерархическими папками и проводником файлов.

Как одна из популярных IDE, Visual Studio Code поддерживает сообщество разработчиков Go, которые регулярно вносят свой вклад. Она позволяет расширить функциональные возможности с помощью множества доступных плагинов

3. LiteIDE

LiteIDE является одной из первых ориентированных на Golang сред с открытым исходным кодом, которая была создан более 5 лет назад. Как приложение C++ Qt с уникальным внешним видом, LiteIDE предлагает управление кодом, настраиваемые команды сборки, отладчики gdb и Delve, автозавершение и тематизацию с помощью WordApi (системы на основе типов MIME) и многое другое. Он также обеспечивает поддержку JSON и Golang.

4. Wide

Wide – это веб-среда для программистов Golang, предназначенная для совместной разработки, отлично подходит для команд и агентств веб-разработки. К основным возможностям относятся форматирование внешнего вида кода, отладка, интеграция с Git и многое другое.

Поскольку Wide создается и поддерживается китайским разработчиком, большая часть его документации и помощи на китайском языке.

5. Atom with go-plus plugin

Если вы уже используете Atom, ваш опыт редактирования кода в Golang можно улучшить с помощью пакета с открытым исходным кодом go-plus. С ним вы получаете мгновенную обратную связь в режиме реального времени о своем синтаксисе и ошибках сборки.

Пакет go-plus предлагает почти все возможности Golang в Atom. Его также можно использовать для инструментов, потоков сборки, статических анализаторов и инструментов покрытия кода.

Go-plus также включает в себя различные фрагменты кода и функции, такие как автозаполнение с кодом go, форматирование кода с помощью gofmt, goreturns или goimports и многое другое.

6. Eclipse with GoClipse

Из-за широкой известности Eclipse для нее было создано большое количество плагинов. GoClipse – это плагин Eclipse для Golang, который предлагает редактирование исходного кода Go с настраиваемым форматированием синтаксиса, автоматическим отступом и завершением скобки.

GoClipse также служит мастером проекта и построителем, который мгновенно сообщает об ошибках синтаксиса и сборки. К дополнительным функциям Eclipse относятся функционал отладки и автодополнение кода.

7. Sublime Text with GoSublime

Sublime Text – еще один сложный текстовый редактор с большим сообществом авторов и разработчиков. Поэтому для этой IDE было создано множество плагинов.

GoSublime – плагин Golang для Sublime Text 3, который предлагает автозавершение кода из Gocode, проверку синтаксиса, статический анализ кода и во время написания кода, автоматическое добавление и удаление пакетов импорта и многое другое.

8. Vim с плагином vim-go

Vim – это бесплатная среда с открытым исходным кодом, которую можно кастомизировать и настроить с помощью различных плагинов. Если вы программист Golang, вы можете использовать Vim с плагином vim-go, созданным Фатихом Арсланом (Fatih Arslan). Плагин автоматически устанавливает все необходимые двоичные файлы для обеспечения плавной интеграции Vim для Golang.

Vim-go – это мощный плагин для написания и разработки Go. Его функции включают в себя расширенный анализ исходного кода, добавление и удаление путей импорта, определение goto, быстрое выполнение файлов и многое другое.

Vim-go удобный настраиваемый плагин, имееющий отдельный функции, которые могут быть включены или отключены в соответствии с вашими потребностями.

9. Komodo

Komodo является полнофункциональной средой, которая поддерживает Go и другие языки программирования, такие как Node.js, Python, Ruby, Perl и многие другие. С помощью этой IDE, вы можете легко написать чистый код. Ее функции включают в себя расширенный редактор кода, интеллектуальное завершение кода, проверку синтаксиса, контроль версий и модульное тестирование, а также Go Code Intelligence, который предоставляет подсказки и навигацию по коду.

Самое замечательное в Komodo – это то, что он отлично подходит для совместной работы, так как несколько разработчиков могут редактировать документ одновременно. Komodo может быть установлен на Mac, Windows или Linux с одной лишь лицензией.

10. IntelliJ IDEA с Go Language Support Plugin

IntelliJ IDEA – это еще одна IDE так же разработанная JetBrains. Если вы хотите использовать ее с Golang, вам нужно установить плагин поддержки языка Go. Но, в отличие от Gogland, возможности будут сильно ограничены.


Инструменты для Golang

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

1. Apicompat

Apicompat – это новый инструмент языка Go, который помогает разработчикам находить обратные, несовместимые изменения и экспортированные объявления. С помощью Apicompat вы можете избежать ложных срабатываний. Однако не каждое обратное несовместимое изменение может быть обнаружено Apicompat. Параметры аргумента замены и другие изменения по-прежнему должны рассматриваться автором библиотеки.

2. Checkstyle

По примеру Java Checkstyle, Checkstyle для Golang предлагает варианты стиля кодирования. Он также позволяет разработчикам проверять строки файлов, строки функции и номера параметров, которые затем могут быть настроены пользователем.

3. Depth

Depth – еще один полезный инструмент Golang, который помогает веб-разработчикам извлекать и визуализировать деревья зависимостей исходного кода Go. Его можно использовать как отдельное приложение командной строки или как конкретный пакет в вашем собственном проекте. Вы можете настроить его просто установив соответствующие флаги на дереве перед решением.

4. Go-Swagger

Этот инструментарий включает в себя широкий спектр функций. Go-Swagger является реализацией Swagger 2.0 и может сериализовать и десериализовать спецификации swagger. Это минималистское, но мощное представление вашего RESTful API.

С Go-Swagger вы можете swagger spec document, проверить схему json и другие дополнительные правила. Другими преимуществами являются генерация кода, API на основе спецификаций swagger, спецификаций документов на основе кода и расширенные строковые форматы и так далее.

5. Go Meta Linter

Если вам нужно запустить инструменты статического анализатора и одновременно нормализовать их вывод, то Go Meta Linter может помочь с этим. Он предназначен для использования с текстовым редактором или IDE, такими как плагин Sublime Linter, пакет Atom go-plus, Emacs Flycheck checker, Vim/Neovim и Visual Studio Code. Он также поддерживает широкий спектр статических анализаторов и конфигурационных файлов, таких как JSON.

6. Go-callvis

Go-callvis – это инструмент веб-разработки, который позволяет визуализировать график вызовов вашей программы Go в формате Graphviz dot. Этот инструмент особенно полезен при построении больших проектов со сложным исходным кодом. Это также полезно, если вы хотите понять структуру кода другого разработчика или перестроить чужой проект.

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

7. Gonative

Gonative – это простой инструмент Golang, который позволяет создавать toolchain с собственными библиотеками, которые могут быть скомпилированы с использованием версий пакетов stdlib с поддержкой Cgo.

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

К сожалению, Gonative недостаточно протестирован на Windows, а поддержка Linux/arm отсутствует.

8. Grapes

Grapes – это инструмент Golang, предназначенный для легкого распределения команд по ssh. Она написана и активно поддерживается Яроном Сумел (Yaron Sumel).

Grapes скоро будет поддерживать полную проверку ключа хоста, так что разработчикам стоит присмотреться к нему.

9. Gosimple

Самое замечательное в этом статическом анализаторе заключается в том, что он фокусируется на упрощении исходного кода Go. Gosimple всегда нацелен на последнюю версию Go, поэтому требуется Go версии 1.6 и выше. Если есть новый релиз Go, то Gosimple предложит самые простые методы, чтобы избежать сложных конструкций.

10. Go Vendor

Go Vendor – это инструмент Golang, который работает со стандартной папкой Vendor. Он позволяет разработчикам копировать существующие зависимости из $GOPATH с помощью govendor add/update. Вы также можете напрямую извлекать новые зависимости или обновлять существующие зависимости с помощью governor fetch и перемещать устаревшие системы с помощью govendor миграции.

Заключение

Если вы пришли из окружения JS/Node, вам необходимо изучить некоторые новые концепции программирования, такие как сопрограммы, каналы, строгая типизация с компиляцией, интерфейсы, структуры, указатели и некоторые другие различия. Но, как только вы все это поймете, вы обнаружите, что Golang проще и быстрее в использовании.


Перевод статьи - Medium


Report Page