Przewodnik Golang: A List of Top Golang Frameworks, IDEs & Tools
Od momentu wprowadzenia, język programowania Go firmy Google (Golang) przeżywa rosnącą popularność wśród użytkowników mainstreamowych. W badaniu z grudnia 2016 roku 89% z 3 595 respondentów twierdziło, że programuje w Go w pracy lub poza nią.
Dodatkowo, Go zajmuje najwyższe miejsce wśród języków programowania pod względem wiedzy specjalistycznej i preferencji. W lipcu tego roku 2017, Go zajmuje 10 miejsce w rankingu Tiobe’s Programming Language of the Year, skacząc z 55 miejsca w zeszłym roku.
Wyraźnie widać, że Go przyciąga wielu programistów z różnych dyscyplin i specjalistów outsourcingu rozwoju oprogramowania. I można śmiało powiedzieć, że jest to spowodowane łatwością użycia Go.
Jako skompilowany, otwarty język programowania, Go ułatwia programistom budowanie prostego, niezawodnego i wydajnego oprogramowania. Jest produktem innowacji i ewolucji bardziej konserwatywnych języków, takich jak C i C++.
Dzięki Go ilość wpisywanego kodu została zredukowana, a pisanie solidnych interfejsów API bez poświęcania jego wydajności stało się łatwiejsze. Zaprojektowany dla skalowalności i współbieżności, Go umożliwia optymalizacje. Kompilator może wykonać całą pracę inspekcji kodu przed uruchomieniem.
Skonsolidowaliśmy listę najlepszych frameworków, IDE i narzędzi dla Golanga dla twojego szybkiego odniesienia. Zapisz ją w swojej przeglądarce, abyś mógł do niej wrócić za każdym razem, gdy będziesz pracował z Go!
Frameworki dla Golanga
Frameworki internetowe pomagają programistom budować aplikacje tak łatwo i szybko, jak to tylko możliwe. Go jest wciąż stosunkowo nowe, więc ważne jest, aby używać frameworków z wystarczającą dokumentacją.
Oto 9 frameworków, których możesz użyć, aby pomóc w tworzeniu projektów przy użyciu języka Go.
Revel
Jako framework o wysokiej produktywności dla Go, Revel zawiera narzędzie Hot Code Reload, które pozwala przebudować projekt przy każdej zmianie pliku. Zawiera również wiele wszechstronnych i wydajnych funkcji, więc nie musisz szukać zewnętrznych bibliotek do integracji z frameworkiem.
Beego
Beego jest pełnoprawnym frameworkiem MVC z własną biblioteką logowania, ORM i frameworkami webowymi. Nie musisz szukać i instalować bibliotek innych firm. Posiada wbudowane narzędzie o nazwie Bee Tool, które czuwa nad zmianami w kodzie i uruchamia zadania, gdy zmiany zostaną wykryte.
Beego zaoszczędzi Ci wiele godzin, szczególnie na początku projektu, gdy zastanawiasz się nad ramami logowania lub strukturą aplikacji.
Martini
Inspirowany przez Sinatrę, Martini jest niezwykle lekkim, ale potężnym frameworkiem. Został opracowany do pisania modułowych aplikacji internetowych i usług w Golangu.
Charakteryzuje się nieinwazyjnym designem, który jest szybki i łatwy w użyciu i zawiera szeroki zakres handlerów i middleware. Jest w stanie wykonywać podstawowy routing, obsługę wyjątków i domyślne serwowanie dokumentów dla aplikacji AngularJS w trybie HTML5.
Najlepszą cechą Martini jest wykorzystanie refleksji, która pozwala programistom dynamicznie wstawiać dane do funkcji handlerów i dodawać nowe usługi. Martini jest również w pełni kompatybilny z interfejsem http.HandlerFunc. Minusem jest jednak to, że framework Martini nie jest już utrzymywany.
Gin Gonic
Gin Gonic jest frameworkiem internetowym z API podobnym do Martini, ale o znacznie lepszej wydajności. Jeśli używałeś wcześniej Martini, to będziesz zaznajomiony z Gin Gonic. W przeciwnym razie, nauczenie się Gin zajmie ci tylko 10 minut. To takie proste!
Gin Gonic jest minimalistycznym frameworkiem, który zawiera tylko najbardziej niezbędne biblioteki i funkcje. To czyni go idealnym do tworzenia wysokowydajnych interfejsów REST API. Dodatkowo, jest 40 razy szybszy niż Martini.
Możesz dodać middleware, zagnieżdżone grupy, walidację JSON i renderowanie, ale nadal zachowuje swoją optymalną wydajność. Gin Gonic używa httprouter, najszybszego routera HTTP dla Go.
Buffalo
Budowanie nowych aplikacji internetowych z Go jest szybkie i proste dzięki Buffalo. Kiedy rozpoczynasz nowy projekt, Buffalo ma już wszystko skonfigurowane – od frontendu do rozwoju back-endu.
Jest wyposażony w funkcję Hot Reloading, co oznacza, że polecenie dev będzie automatycznie obserwować pliki .go i .html. Następnie przebuduje i zrestartuje twoją binarkę za ciebie. Po prostu uruchom polecenie dev, a zobaczysz, jak zmiany zachodzą na żywo na twoich oczach!
Buffalo jest czymś więcej niż tylko frameworkiem – jest holistycznym ekosystemem do tworzenia stron internetowych, który pozwala ci od razu przejść do budowania aplikacji.
Goji
Goji jest lekkim i szybkim frameworkiem sieciowym, którego głównym priorytetem jest złożoność i prostota. Podobnie jak net/http.ServeMux, Goji jest minimalistycznym multiplekserem żądań HTTP. Zawiera obsługę Einhorn, co sprawia, że możliwe jest posiadanie obsługi websocket w Goji.
Dodatkowe cechy obejmują wzorce URL, rekonfigurowalny stos middleware, zgrabne zamykanie i więcej. Goji może być używany w produkcji i obsłużył miliardy żądań w kilku organizacjach.
Tiger Tonic
Inspirowany przez Dropwizard, Tiger Tonic jest frameworkiem Go do rozwijania usług internetowych JSON i budowania wysokowydajnych interfejsów API REST. Aby pozostać wiernym zasadom Golanga, Tiger Tonic stara się utrzymać ortogonalne funkcje.
Wadą Tiger Tonic jest jego niedoskonałość, jeśli chodzi o budowanie dużych, back-endowych aplikacji.
Gocraft
Kolejny potężny, ale minimalistyczny framework, Gocraft oferuje szybką i skalowalną wydajność routingu. Dodaje routing do pakietu net/http z biblioteki standardowej.
Gocraft jest pakietem Go mux i middleware, który posiada możliwości castingu i refleksji, dzięki czemu możesz statycznie wpisywać swój kod. Możesz również dodać opcjonalną funkcjonalność z wbudowanym oprogramowaniem pośredniczącym lub napisać własne.
Ponieważ wydajność jest zawsze jednym z głównych zmartwień dla programistów, Gocraft jest świetnym wyborem dla programistów. Bardzo łatwo jest pisać backendowe aplikacje internetowe przy użyciu frameworka Gocraft.
Mango
Mimo że Mango nie jest aktywnie utrzymywane przez jego twórcę, Paula Bellamy’ego, wielu użytkowników Go wciąż go używa. Wspaniałą rzeczą w Mango jest jego modularność. Możesz wybierać spośród wielu bibliotek, które chcesz włączyć do swojego projektu.
Mango pozwala budować moduły wielokrotnego użytku funkcjonalności HTTP tak szybko i łatwo, jak to tylko możliwe. Kompiluje listę oprogramowania pośredniczącego i aplikacji do pojedynczego obiektu serwera http, aby utrzymać kod w stanie samowystarczalności.
Integrated Development Environment (IDEs) for Golang
IDEs for Golang zyskują na popularności, wraz z językiem Go. Podczas gdy wielu programistów nadal woli używać edytorów tekstu, wielu woli używać również IDE.
Jeśli pracujesz nad projektem na dużą skalę z obszerną bazą kodów, IDE może pomóc Ci uporządkować kod i poruszać się po nim z łatwością. Co więcej, IDE może pomóc Ci przetestować Twój kod i odpowiednio go edytować.
Oto najlepsze IDE, które świetnie współpracują z Golangiem.
Gogland
Firma JetBrains, zajmująca się rozwojem oprogramowania, wydała kolejne niezawodne IDE, ale tym razem dla Golanga. Gogland jest komercyjnym IDE, które zapewnia solidne, ergonomiczne środowisko dla programistów Go. Posiada również pomoc w kodowaniu, debugger oraz zintegrowany terminal.
Ponieważ uznana firma stworzyła Gogland, ma on rozbudowany ekosystem wtyczek IntelliJ, gdzie można uzyskać dodatkowe narzędzia, jeśli potrzebujesz więcej.
Visual Studio Code
Utworzony przez Microsoft, Visual Studio Code jest w pełni funkcjonalnym, open-source’owym IDE i edytorem kodu, który obsługuje szeroką gamę języków programowania. Posiada funkcję inteligentnego uzupełniania z IntelliSense; debugowanie przy użyciu punktów przerwania, stosów wywołań i interaktywnej konsoli; wbudowaną integrację z Git; oraz hierarchiczny eksplorator folderów i plików.
Jako kolejne popularne IDE, Visual Studio Code ma wspierającą społeczność programistów Go, którzy regularnie wnoszą swój wkład. Dzięki Visual Studio Code można rozszerzyć funkcjonalność za pomocą szeregu dostępnych wtyczek.
LiteIDE
LiteIDE jest jednym z pierwszych Golang-centric, open-source IDEs, który został stworzony ponad 5 lat temu. Jako aplikacja C++ Qt o unikalnym wyglądzie i działaniu, LiteIDE oferuje zarządzanie kodem, konfigurowalne komendy budowania, debugger gdb i Delve, autouzupełnianie i tematyczność z WordApi, system oparty na typach MIME i wiele więcej. Zapewnia również wsparcie dla JSON i Golang.
Wide
Wide jest opartym na sieci IDE dla programistów Golang. Jest zaprojektowane do wspólnego rozwoju i działa najlepiej dla zespołów i agencji rozwoju sieci. Funkcje Wide obejmują podświetlanie kodu, debugowanie, integrację z Git i wiele więcej.
Ponieważ Wide jest tworzony i utrzymywany przez chińskiego programistę, większość jego dokumentacji i wsparcia technicznego jest w języku chińskim.
Atom z wtyczką go-plus
Jeśli już używasz Atoma, twoje doświadczenie edycji kodu w Golangu może być ulepszone dzięki pakietowi open-source o nazwie go-plus. Z go-plus, dostajesz natychmiastową informację zwrotną w czasie rzeczywistym o błędach składni i kompilacji.
Pakiet go-plus oferuje prawie całe wsparcie Golanga w Atomie. Może być również używany do narzędzi, przepływów budowania, linterów, wet i narzędzi pokrycia.
Go-plus zawiera również różne wycinki kodu i funkcje, takie jak autocomplete z gocode, formatowanie kodu z gofmt, goreturns, lub goimports, i więcej.
Eclipse z GoClipse
Ponieważ Eclipse jest szeroko popularnym IDE, stworzono dla niego wiele wtyczek. GoClipse jest wtyczką Eclipse dla Golanga, która oferuje edycję kodu źródłowego Go z konfigurowalnym kolorowaniem składni i automatycznym uzupełnianiem wcięć i nawiasów.
GoClipse służy również jako kreator i budowniczy projektów, który natychmiast raportuje błędy składni i kompilacji. Dodatkowe funkcje GoClipse obejmują funkcje debugowania i wspomagania kodu.
Sublime Text with GoSublime
Sublime Text jest kolejnym zaawansowanym edytorem tekstu z dużą społecznością współpracowników i deweloperów. Jako taki, został stworzony szeroki wybór wtyczek dla tego IDE.
GoSublime jest wtyczką Golang dla Sublime Text 3, która oferuje uzupełnianie kodu z Gocode, sprawdzanie lint/syntaktyki podczas pisania kodu, automatyczne dodawanie i usuwanie importu pakietów i wiele więcej.
Vim z wtyczką vim-go
Vim jest darmowym, open-source’owym IDE, które można dostosować i skonfigurować za pomocą różnych wtyczek. Jeśli jesteś programistą Golanga, możesz używać Vima z wtyczką vim-go stworzoną przez Fatiha Arslana. Vim-go automatycznie instaluje wszystkie niezbędne binarki do zapewnienia płynnej integracji Vima z Golangiem.
Vim-go jest potężnym pakietem wtyczek do pisania i rozwijania Go. Jego funkcje obejmują zaawansowaną analizę kodu źródłowego, dodawanie i usuwanie ścieżek importu, obsługę wielu 3rd linerów, definiowanie goto, szybkie wykonywanie plików i wiele innych.
Vim-go jest wysoce konfigurowalny, z indywidualnymi funkcjami, które mogą być włączone lub wyłączone w zależności od potrzeb.
Komodo
Komodo to w pełni funkcjonalne IDE języka Go, które obsługuje inne języki programowania, takie jak Node.js, Python, Ruby, Perl i inne. Z tym Go IDE, można pisać czysty kod łatwo. Jego funkcje obejmują zaawansowany edytor kodu, inteligentne uzupełnianie kodu, sprawdzanie składni, kontrolę wersji i testowanie jednostkowe oraz Go Code Intelligence, który umożliwia przeglądanie kodu i podpowiadanie kodu.
Wspaniałą rzeczą w Komodo jest to, że działa świetnie dla współpracy zespołowej, ponieważ wielu programistów może edytować dokument jednocześnie. Komodo może być zainstalowany na Mac, Windows lub Linux z jedną licencją.
IntelliJ IDEA z wtyczką wsparcia dla języka Go (golang.org)
IntelliJ IDEA (ta sama firma co JetBrains) jest IDE, które może być używane z Golangiem poprzez wtyczkę wsparcia dla języka Go. Jeśli chcesz używać IntelliJ IDEA z Golangiem, musisz zainstalować tę wtyczkę, aczkolwiek z ograniczonymi funkcjami w przeciwieństwie do Gogland.
Narzędzia dla Golanga
Narzędzia dla Golanga mogą być używane do wielu różnych projektów i aplikacji internetowych. Programiści mogą pisać kod i budować aplikacje tak szybko i łatwo, jak to tylko możliwe, dzięki tym pomocnym narzędziom.
Oto lista najlepszych narzędzi Golanga dla twojego odniesienia.
Apicompat
Apicompat to nowe narzędzie języka Go, które pomaga programistom wykrywać wsteczne, niekompatybilne zmiany i wyeksportowane deklaracje.
Dzięki Apicompat, możesz uniknąć fałszywych pozytywów. Jednakże, nie każda zmiana niezgodna wstecz może być wykryta przez Apicompat. Zamiana parametrów argumentów i inne zmiany nadal muszą być rozważone przez autora biblioteki.
Checkstyle
Zainspirowany przez Java Checkstyle, Checkstyle dla Golanga wypisuje sugestie dotyczące stylu kodowania. Pozwala także programistom sprawdzać linię/funkcję pliku i numer linii/param, które mogą być następnie skonfigurowane przez użytkownika.
Depth
Depth jest kolejnym użytecznym narzędziem Golanga, które pomaga programistom wyszukiwać i wizualizować drzewa zależności kodu źródłowego Go. Może być używane jako samodzielna aplikacja wiersza poleceń lub jako konkretny pakiet w ramach własnego projektu. Możesz dodać dostosowania, po prostu ustawiając odpowiednie flagi na drzewie przed rozwiązaniem.
Go-Swagger
Ten zestaw narzędzi zawiera szeroką gamę cech i funkcji. Go-Swagger jest implementacją Swagger 2.0, i może serializować i deserializować specyfikacje Swagger. Jest to minimalistyczna, ale potężna reprezentacja Twojego RESTful API.
Z Go-Swagger, możesz swagger spec dokument, walidację przeciwko jsonschema, i inne dodatkowe zasady. Inne funkcje obejmują generowanie kodu, generowanie API na podstawie specyfikacji swagger, generowanie dokumentu spec na podstawie kodu, rozszerzone formaty łańcuchów i inne.
Go Meta Linter
Jeśli potrzebujesz uruchomić narzędzia Go lint i normalizować ich wyjście jednocześnie, to jest dokładnie to, co Go Meta Linter może dla Ciebie zrobić. Go Meta Linter jest przeznaczony do użycia z edytorem tekstu lub integracją z IDE, taką jak Sublime Linter plugin, Atom go-plus package, Emacs Flycheck checker, Vim/Neovim, and Go for Visual Studio Code. Obsługuje również szeroką gamę linterów i plików konfiguracyjnych, takich jak JSON.
Go-callvis
Go-callvis jest narzędziem programistycznym, które pozwala na wizualizację wykresu wywołań programu Go za pomocą formatu kropkowego Graphviz. Narzędzie to jest szczególnie przydatne podczas budowania dużych projektów o złożonych bazach kodu. Jest to również przydatne, gdy chcesz zrozumieć strukturę kodu innego programisty lub przebudować czyjś projekt.
Z go-callvis, programiści mogą skupić się na określonym pakiecie w programie; grupować funkcje według pakietu i metody według typu; i ograniczać pakiety do niestandardowych prefiksów ścieżek i ignorować te, które je zawierają.
Gonative
Gonative jest prostym narzędziem Golanga, które pozwala na budowanie łańcuchów narzędzi Go z natywnymi libami, które mogą być kompilowane krzyżowo, a jednocześnie wykorzystywać wersje pakietów stdlib z obsługą Cgo.
Gonative pobiera binarne dystrybucje dla każdej platformy i kopiuje ich biblioteki w odpowiednie miejsca. Jednocześnie Gonative ustawia właściwy czas modów, aby uniknąć niepotrzebnych przebudowań.
Niestety, Gonative pozostaje nieprzetestowany na Windows. Dodatkowo, nie ma wsparcia dla Linuksa/armii.
Grapes
Grapes jest lekkim narzędziem Golang zaprojektowanym do łatwej dystrybucji komend przez ssh. Jego autorem i aktywnym opiekunem jest Yaron Sumel.
Grapes wkrótce będzie obsługiwał pełną walidację klucza hosta, więc jest to coś, na co deweloperzy powinni uważać.
Gosimple
Wspaniałą rzeczą w tym linterze Golanga jest to, że skupia się na upraszczaniu kodu źródłowego Go. Gosimple zawsze celuje w najnowszą wersję Go, więc wymaga Go w wersji 1.6 lub nowszej.
Jeśli jest nowe wydanie Go, gosimple zasugeruje najłatwiejsze i najprostsze metody, aby uniknąć skomplikowanych konstrukcji.
Go Vendor
Go Vendor jest narzędziem Golanga, które działa ze standardowym folderem Vendor. Pozwala programistom na kopiowanie istniejących zależności z $GOPATH za pomocą govendor add/update. Można również bezpośrednio wyciągnąć nowe zależności lub zaktualizować istniejące zależności za pomocą govendor fetch i przenieść starsze systemy za pomocą govendor migrate.
Wrapping It Up
Jeśli pochodzisz z tła JS/Node, musisz nauczyć się kilku nowych koncepcji programowania, takich jak coroutines, kanały, ścisłe typowanie z kompilacją, interfejsy, structs, wskaźniki i kilka innych różnic. Ale kiedy już się w to wczujesz, przekonasz się, że Golang jest łatwiejszy i szybszy w użyciu.