Apache Cordova i moje odczucia

Posted by Maciej Gos on Monday, September 18, 2017

TOC

Niniejszy post jest tylko moją opinią i w żaden sposób nie podziela opinii mojej firmy.
 
Tak się złożyło, że przez ostatnie 2 miesiące zajmowałem się tworzeniem aplikacji hybrydowej z wykorzystaniem Apache Cordova oraz jQuery Mobile.
 
Dzisiaj chciałbym się z wami podzielić moimi odczuciami na temat tego framework, oraz pracy z nim w realnym projekcie. A więc zaczynajmy…
 

Background

Na początek chciałbym wprowadzić pewien kontekst w jakim będę chciał ocenić wywyższy framework.
 
Moim zadaniem było stworzenie aplikacji mobilnej na potrzeby jednego eventu z możliwością wyświetlenia video na żywo. Aplikacja powinna również posiadać lokalną bazę danych żeby dane nie musiały być ściągane za każdym razem z serwera.
 
Wybór padł na użycie:

  • Apache Cordova
  • jQuery Mobile
  • HTML5 local storage (lub jak inaczej się to ładnie nazywa)
  • MJPEG

 
Pomysł prosty i powiedzmy sprawdzony w boju przez wiele firm bądź nie…
 

Apache Cordova

Apache Cordova jest frameworkiem open-source do tworzenia aplikacji mobilnych z użyciem HTML, CSS i JavaScript. Technicznie nie jest to nic innego jak kontener opakowujący WebView i uruchamiający stronę web w natywnej przeglądarce dla danej platformy.

Kontener ten stanowi pewnego rodzaju wrapper pomiędzy natywnym API danej platformy, a aplikacją napisaną w HTML. Daje to nam możliwość w miarę łatwego dostępu do API urządzania. W moim przypadku był to Android i iOS.
 
Dlaczego Apache Cordova? I czemu aplikacja hybrydowa?
 
Padło na stworzenie aplikacji hybrydowej z jednej przyczyny no może trzech. HTML, CSS i JavaScript, oraz łatwość znalezienia programistów znających te technologie.
 
Bardzo łatwo jest stworzyć prostą aplikację klasy Todo app niestety problemy zaczynają się pojawiać w sytuacji gdy chcemy zacząć robić coś więcej. Tutaj z pomocą czasami mogą przyjść nam pluginy.
 

Cordova Plugins

Dają one dostęp do dodatkowych funkcjonalność jak np. logowanie za pomocą sieci społecznościowych lub dostęp do natywnych powiadomień.
 
Koncepcja fajna niestety posiadająca wiele niedociągnięć.
 
Bardzo często pluginy są rozwijane przez pojedynczych programistów w ich wolnym czasie co w efekcie sprawia, że są one różnej jakości. Nie twierdzę, że jest to coś złego niestety zmusza do przeszukiwania StackOverflow lub GithHub Issues w poszukiwaniu rozwiązań.
 
Wiele pluginów wymaga do działania różnych „niebezpiecznych” uprawnień na różnych platformach np. dostęp do dysku.
 

jQuery Mobile

Kolejny komponent który może ułatwić pracę ponieważ sama Cordova niewiele potrafi.
 
Niestety nie ma róży bez kolców i jQM od wielu miesięcy nie jest chyba rozwijane . Najnowsza wersji 1.5 jest od paru ładnych miesięcy wersją alpha.
 
Szczęście w nieszczęściu nawet działa i nie sprawia za wiele problemów. No może za wyjątkiem ciągłej walki ze stylami CSS.
 
To był chyba najtrudniejszy etap projektu, czyli zmiana wyglądu aplikacji.
 

Podsumowania słów kilka

Jak widzicie moje odczucia raczej można powiedzieć są negatywne. Może to wynikać z mojej ogólnej niechęci do JavaScript :).
 
Są one jednak poparte pracą nad realnymi problemami w realnym projekcie. Dlatego na chwilę obecną raczej bym się nie zdecydował na użycie Cordova w następnym projekcie.
 
Pytanie pozostaje czy np.. Xamarin Forms byłby lepszy?
 
Wiadomo każdy framework ma swoje plusy i minusy jak również wszystko zależy od konkretnego przypadku.
 
W moim przypadku może lepszym byłoby użycie np.. Firebase niestety w założeniach mieliśmy również minimalizację usług third party :).

Maciej Gos

真诚赞赏,手留余香

使用微信扫描二维码完成支付


comments powered by Disqus