Xamarin vs Vue/React Native

Odpowiedz Nowy wątek
2019-01-30 23:06
0

W ramach technologii mobilnych na studiach mam wykonać niezbyt duży projekt -aplikacja zdrowotna, zbierająca kilka podstawowych danych i generująca statystyki. No i teraz mam dylemat. Mamy dowolny wybór w doborze technologii. Jedyny wymóg to że aplikacja ma być na smartphone'a. Może, ale nie musi być wieloplatformowa. Waham się trochę co wybrać. Liznąłem bardzo krótko Xamarin jakieś 3 lata temu, na codzień pracuje zarówno w C# jak i JS (React.js) a ostatnio w wolnym czasie ogarniam Vue.js. Ze względu na natłok pracy oraz obowiązki domowe nie mam czasu na naukę kompletnie nowych technologii (a chciałbym nauczyć się np. Kotlin) więc wybór padł na w/w Xamarin lub React/Vue (prawdopodobnie Vue).

Stąd też moja prośba do osób które pracują/pracowały z jedną lub obiema technologiami. Co w nich lubicie/nie lubicie, ewentualnie co Wy byście wybrali i dla czego?

Dodam tylko że początkowo mam zamiar celować tylko w Android, więc w przypadku Xamarin UI robilbym "natywne" pod ten system, a nie w Xamarin.Forms.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
edytowany 1x, ostatnio: Aventus, 2019-01-30 23:06

Pozostało 580 znaków

2019-02-06 16:57
1

AirBnB olało Reacta. W czerwcu ubiegłego roku to ogłosili.
https://medium.com/airbnb-eng[...]ing-react-native-1868ba28e30a

Pozostało 580 znaków

2019-02-06 16:59
0

I zrobili to z zupełnie innych powodów niż wydajność.

Pozostało 580 znaków

2019-02-06 17:01
1

Dokładnie. Uważam że React Native jest dobry do małych projektów, ewentualnie jakichś testów ponieważ ktoś kto ogarnia dobrze Reacta to w React Native napiszę bardzo szybko apke. Ale wszystko ma swoją cenę i jest nią wydajność.


Pozostało 580 znaków

2019-02-06 17:09
0

Na pewno mówimy o tym samym frameworku? React Native ma jakiś wpływ na wydajność, ale nie jest on znaczący w większości przypadków. Podlinkowany artykuł od AirBnb to potwierdza, zastosowanie React Native przez dużych graczy to potwierdza, nagrody dla aplikacji napisanych w React Native to potwierdzają, moje chałturnicze zabawy z React Native też to potwierdzają. Ma on oczywiście swoje wady i sam za React Native nie przepadam, bo widzę lepsze rozwiązania dla wielu platform, ale argumenty o spadkach wydajności są nieuzasadnione.

Pozostało 580 znaków

2019-02-06 17:09
1
Michał Sikora napisał(a):

I zrobili to z zupełnie innych powodów niż wydajność.

Napisałeś, że używają więc sprostowałem bo nie używają.

W podlinkowanym przez mnie artykule narzekają na wydajność pewnych elementów.
"However, some technical challenges such as initialization and the async first render made meeting certain goals challenging."
Z artykułu podlinkowanego do tego dodanego przeze mnie:
"However, the initialization and first-render time (outlined below) made React Native perform poorly for launch screens, deeplinks, and increased the TTI time while navigating between screens."
https://medium.com/airbnb-eng[...]nb-the-technology-dafd0b43838

Pozostało 580 znaków

2019-02-06 17:16
0

Niczego nie sprostowałeś, bo React Native dalej jest w ich aplikacji. Nie wywalili nagle całego kodu, który mieli napisany w React Native. A tekst, który cytujesz, jest w sekcji What Worked Well, więc nie mieli problemów z wydajnością. Po prostu kilka rzeczy ucierpiałoby na wydajności i tam ograniczali React Native.

edytowany 1x, ostatnio: Michał Sikora, 2019-02-06 17:17
Nie rozumiem. Nie użyli React Native dla launcherów i to znaczy, że React Native jest niewydajny, mimo że sami zaznaczali, że wydajność była dla nich zadowalająca? Mieli nawet spadki w innych sytuacjach, ale ogólnie wydajność była dla nich na plus. - Michał Sikora 2019-02-06 17:21

Pozostało 580 znaków

2019-02-10 07:45
4

Główną wadą Xamarina / RN jest to, że oba frameworki bazują pod spodem na natywnym UI, a same w sobie są taką jakby abstrakcją. Dlatego zawsze będą do tyłu względem natywnego UI. Poza tym ilość występujących bugów jest potrójna: bugi z iOSa, bugi z Androida oraz bugi z Xamarina/RN.

Osobiście polecam Fluttera. Problem który opisałem jest mocno zredukowany bo Flutter renderuje każdy piksel. Oczywiście abstrakcja jest nadal potrzebna żeby np. obsłużyć GPS, ale da się z tym żyć.

Pozostało 580 znaków

2019-02-26 10:42
V-2
6

Jest wydajność, i jest wydajność. Kilka tygodni z React Native rozczarowało mnie gorzko, boleśnie i na wielu poziomach. Lepiej rzeźbiło się w Xamarinie trzy lata temu (inna sprawa, że rozwój tej platformy w międzyczasie trochę zdaje się zamarł).

W Reakcie wciąż tajemnicze błędy konfiguracyjne, co drugi upgrade wywala builda, przez pół dnia guglowanie przyczyn różnych tajemniczych zjawisk, aż znajdujemy zbawienne wyjaśnienie w rodzaju: "no tak, jeśli jest TypeScript i używasz skróconej notacji dla lambd w pliku który ma ponad 150 linii, to breakpointy mogą nie działać" :) Wsparcie dla testowania też jest w takim stanie, że można osiwieć.

Co się czegoś nie dotknę, to nie działa, albo zawodzi w jakichś duperelach. Chcesz dodać możliwość share'owania obrazka? No fajnie - to się okazuje, że API React Native przewiduje możliwość udostępnienia pliku przez url (albo jako base64) tylko dla iOS. Na Androida możesz sobie zshare'ować tylko tekstowy komunikat. Vide: https://facebook.github.io/react-native/docs/share - a przypominam, ta platforma ma już 5 lat.

Żeby mimo wszystko zshare'ować plik, musisz dodać osobną bibliotekę (utrzymywaną przez społeczność) pt. react-native-share. I oczywiście znowu potknięcia, bo po "automatycznej instalacji" tego pakietu React w ścieżce dodanej do settings.gradle użyje ukośników wstecznych, zamiast normalnych, bez żadnych znaków ucieczkowych. I build się wychrzania, i trzeba to ręcznie poprawiać. I tak przez cały czas, wszędzie jakieś niedoróbki. Oczywiście natywne platformy też nie są od nich wolne, ale jednak nie wpada się na nie co krok, i to przy robieniu najprostszych rzeczy. Tu poziom stabilności oceniłbym jako alfę, i to taką bez szału.

Tak że wrażenie, jak to wrażenie - subiektywne... jednak dla mnie jedna z najmniej przyjemnych platform, z jakimi się dotąd zetknąłem. Jak zaznaczyłem, wypuszczona 5 lat temu - a odczucie jest takie, jakby miała 5 miesięcy. No, może wtedy przynajmniej nie byłoby tony nieaktualnych tutoriali i artykułów zalegających w necie. Bo zmiany rozwojowe były na tyle burzliwe, że przed zapoznaniem się z jakimś materiałem warto krytycznie zerknąć nie tylko na rok, ale i miesiąc publikacji.

Flutter jest na górze mojej listy technologii do sprawdzenia. Na początek wygląda obiecująco (w każdym razie względem RN) pod dwoma względami: a) Dart, chociaż to nie Kotlin, jest jednak sympatyczniejszym językiem niż JS, b) oficjalna dokumentacja wydaje się porządniejsza i bardziej dogłębna.


Nie ma najmniejszego powodu, aby w CV pisać "email" przed swoim adresem mailowym, "imię i nazwisko" przed imieniem i nazwiskiem" ani "zdjęcie mojej głowy od przedniej strony" obok ewentualnego zdjęcia.
edytowany 2x, ostatnio: V-2, 2019-02-27 13:43
Ot, uroki środowisk rozwijanych przez "społeczność". Od dłuższego czasu pracuje w RN i niestety się przyzwyczaiłem do tego, że przed instalacją nowej paczki oblewa mnie zimny pot, bo może się wydarzyć wszystko, tj. często miałem sytuację, że projekt budował się na linuxie, a nie budował się na macu i odwrotnie. Nie wspomnie już o doświadczeniach pracy na windowsie, bo RN + win to jak zapalniczka i beczka prochu. Ostatecznie mam taki workflow, ze najpierw odpalam wszystkie potrzebne moduły, testuje je, a dopiero później rozwijam aplikacji. Do wygody dystans jak do słońca. - renderme 2019-08-10 11:37
@renderme: a czy myślałeś o przesiadce na (albo chociaż przetestowaniu) Fluttera? - cerrato 2019-08-10 11:50
Myślę i czytam o nim, jednak niestety (a może na szczęście) to nie ja decyduje o tym, w jakiej technologii rozwijane są projekty u mnie w firmie. Oficjalne stanowisko u mnie w firmie jest takie, ze na dzień dzisiejszy niemożliwe będzie znalezienie kompetentnych deweloperów w tej technologii. Ogólnie technologicznie Flutter mnie przekonuje, gdyż nie jest oparty o bridge, tylko kompilowany (z tego co się dowiedziałem). Podoba mi się też to odważne wypuszczenie wersji 1+, gdzie RN to wciąż 0.6. - renderme 2019-08-10 12:13

Pozostało 580 znaków

2019-08-10 12:40
2

Podbijam wątek w kwestii wydajności.
Jako, że pracuję dużo w RN zwrócę uwagę na dwa fakty;

  1. Wydajność, nawet niezauważalna dla użytkownika w płynności aplikacji MA ZNACZENIE, bo przekłada się na zużycie baterii i temperaturę urządzenia. Gdyby nie ten przykry wątek ludzie pisaliby biznesowe apki, np. w unrealu, czy unity, bo one też mogą być płynne (mieć 60 fps), ale wykonują nadmiarowe obliczenia.
  2. Aplikacja pisana w RN MOŻE BYĆ prawie tak wydajna, jak pisana w natywne, ALE NIE MUSI. Wymaga to pracy i wiedzy. Bez tego RN będzie bez sensu renderował milion komponentów, ergo to co w natywkach jest "out of box", w RN wymaga dużej wiedzy, bez której łatwo zabić wydajność aplikacji, szczególnie w nietypowych UI/zastosowaniach.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot