W drodze do react 18
Aktualizacja z react 16 do react 17, była czystą przyjemnością. Mimo że upgrade do 17 nie posiadał, żadnych breaking changes to, dostaliśmy boost performance oraz zupełnie nowy sposób zarządzania logiką aplikacji czyli hooki. Wszystkie nowości mogliśmy implementować nie hamując rozwoju projektu, otrzymując wszystkie benefity. Piękne czasy :)
Zupełnie inaczej jest w przypadku v17 -> v18. Nowa wersja wymaga dodania do każdego komponentu propsa children w którym go używamy. Do tej pory był on w podstawowych interfejsach komponentów. W dużym projekcie oznacza to że zmiany dotkną bardzo dużej ilości komponentów.
No i teraz, zmiana w interfejsach wymusza na zewnętrznych bibliotekach aktualizacje, jeżeli chcą być wspierane przez nowego v18.
Jedną z takich bibliotek jest react-router-v5, i zależnie jak dużo routingu jest w projekcie, to znowu, jest szansa że trzeba będzie dotknąć ogromną ilość plików.
Sam react v18 oraz react-router-dom-v5 sprawiły, że upgrade stał się koszmarem. Szacuje że same te dwie biblioteki wymuszą na nas zmiany praktycznie w prawie każdym pliku projektu. Jest jeszcze pare rzeczy, o których nawet szkoda pisać (np. formik).
Wygląda na to że będziemy mogli zacząć, korzystać z dobrodziejstw v18 dopiero w trzecim kwartale nowego roku. Roadmapa jest pełna nowych usprawnień w projekcie, aczkolwiek nie związanych (na szczęscie) z reactem. Wiec np. natywne suspense po stronie serwera, będzie musiało poczekać w kolejce :(
Mimo tego, sądze że zmiany (nawet te wymuszone), są na plus i nie mogę się doczekać, jak projekt będzie wyglądał po pełnej migracji do react 18 z wszystkimi jego dobrodziejstwami :)
breaking changes
to łamiace zmiany
bo łamią programistów którzy wyestymowali ticketa na 1SP bo to przecież podbicie tylko numerka
Mam ostatnio przyjemność pisać w różnych technologiach. Najwięcej w typescript oraz kotlinie, ale sporo pisze też w php i javie.
Życie jest piękne, można testować różne technologie i mieć porównanie co ma fajniejsze ficzerki.
W Typescript pisze mi się najlepiej i ten język wydaje się świetnym balansem pomiędzy programistycznym światem.
Na drugim miejscu jest dla mnie kotlin. Piękny funkcyjny język oparty o obiektową jave. Na początku myśalałem że to nie ma sensu, ale zakochałem się.
Najgorzej wychodzi PHP jak na razie. Mimo wspaniałego frameworku jakim jest Symfony, mam wrażenie, że taki kotlin wyprzedza go mocno.
@hauleth nie twierdzę, że jest trudny w jakimś absolutnym sensie, tylko że człowiek patrzy na to wszystko i nic się nie rozumie na pierwszy rzut oka. Nie jest to język przyjazny dla osób początkujących, którzy znają inne (mainstreamowe) języki programowania i chcą się nauczyć czegoś nowego. To nie jest język taki, że siadasz i w godzinę robisz już proste programiki. Żeby zrobić byle Hello World w Haskellu, to trzeba poznać monady. To też jest dodatkowy narzut do nauki. Nie to, żebym narzekał, tylko chodzi o stwierdzenie, że nie jest to język przyjazny dla nowicjuszy.
@hauleth: "Jasiu, podkreśl wężykiem, że to jest dowcip." vide: https://m.youtube.com/watch?v=z4dMWaI6MBY
TL;DR: The TypeScript compiler is now implemented internally with modules, not namespaces. The compiler is now 10-25% faster. tsc is now 30% faster to start. Our npm package is now 43% smaller. More improvements are in the works.
myslem ze jak sie robi bundla to spacje sie wyrzuca :D. @furious programming taby to po prostu allias na kilka spacji
Test pewnego pomysłu - komponent do uploadu plików z trochę nietypowym podejściem do UI
a tutaj (niedokończona jeszcze) jego dokumentacja: https://pub.js29a.info.pl/pub/wiki/UZ
style są do niczego, bo jest on zrobiony tak, żeby dało go się dowolnie ostylować - te style co są występują tylko po to, żeby było cokolwiek widać. więc ostylowanie jest de facto 'do it yourself'
Niby komponent Vue a używasz jQuery. Poprawiłbym też na Twoim miejscu formatowanie kodu.
@Adam Boduch: dzięki za uwagi. jQuery już w kodzie nie występuje. powoli porządkuję kod.
Napisałem prosty komponent w Vue-3, który służy do uploadu plików. Bodźcem było to, że chciałem móc zadać, ile plików jednocześnie ma być ładowanych. Jest ogólny, prawie niczego nie wymusza, daje pełny feedback (progress w %, błędy, pliki w kolejce, pliki właśnie ładowane, pliki już załadowane, itp.), pracuje na slotach (po jednym dla każdego stanu) z callbackami i zdarzeniach. Można go użyć zarówno w gołym Vue-3, jak i z np. Quasarem.
Link do demo tego uploadera: https://vite.js29a.usermd.net/#/q/upload
To demo ładuje pliki 'w kosmos', tzn. na mój serwer, ale tylko z feedbackiem w formacie JSON, który zresztą jest wyświetlany 1:1. Można bez problemu zwracać np. miniaturki plików graficznych - potrzeba dosłownie parę linijek kodu. Błąd można wymusić przez plik o nazwie 'err.html'.
Pliki dodaje się przez przycisk 'Pick' albo drop w polu. Auto start - rozpoczynanie uploadu od razu po zadaniu plików. Auto reset - automatyczny powrót do stanu początkowego, bez raportu o załadowanych plikach. Keep going - błąd nie przerywa procedury uploadu, na końcu pojawi się info o błędach.
Wiem, grafika jest do niczego. Ogólnie do jest test stosu Vite - Quasar - Vue-3, więc jest tu sporo przycisków 'po nic', ale chodzi mi o sam sens publikacji uploadera. Jakby ew. doszło do publikacji, to przerobiłbym to na gołe Vue-3, żeby nie zaciemniać sprawy.
No i mam dylemat - temat (chyba) nadaje się na artykuł, ale nie wiem, czy warto go pisać. Jest tam parę 'smaczków', da się to łatwo połączyć także z OAuth2. Jakie jest Wasze zdanie - publikować to, czy nie warto? Średniozaawansowanym chyba by pomogło ...
Publikuj na swojego githuba jako projekt, na front takie projekty są mile widzialne, ja na jednym poście na forum komuś edycję filmu napisałem z użyciem ffmpeg przeglądrakowego i potem pobranie tego jajca, szczerze to przeglądarki dają duże możliwości i jak ktoś jakimś odbieraniem i udostępnianiem plików od użytkownika się nie zajmował to zwykle może nie wiedzieć o jakichś bloblach :>
Testy pewnej koncepcji interfejsu (wersja mobilna sprawdzona na Navitel T500 - Android 7.0 oraz emulatorze - Android 13):
http://vite.js29a.usermd.net/#/t
działa:
Są tu jeszcze bugi, ale generalnie chodzi mi o przedstawienie koncepcji.
środowisko: Vite, Vue, Quasar, TypeScript, Pug, Stylus.
@twoj_stary_pijany: przygotowałem wersję mobilną - sprawdzone na Navitel T500 - Android 7.0 oraz emulatorze - Android 13
@robertos7778: breaking changes nie oznacza przełomowe zmiany. Nie w tym kontekście.