Około 15 lat temu pracowałem w firmie, w której tworzyliśmy aplikacje dla biur podróży, pracowników lotnisk i linii lotniczych. Zbudowaliśmy także własny, wewnętrzny framework dla komponentów interfejsu użytkownika i możliwości aplikacji jednostronicowych. Mieliśmy komponenty do wszystkiego: pola, przyciski, karty, zakresy, tabele danych, menu, elementy datepicker, selekcje i selekcje wielokrotne. Mieliśmy nawet komponent div. Swoją drogą, nasz komponent div był świetny, pozwalał nam na zaokrąglanie rogów we wszystkich przeglądarkach, co – wierzcie lub nie – nie było wówczas łatwe.

Nasza praca miała miejsce w takim momencie naszej historii, kiedy JS, Ajax i dynamiczny HTML były postrzegane jako rewolucja, która przeniosła nas w przyszłość. Nagle mogliśmy dynamicznie aktualizować stronę, pobierać dane z serwera i unikać konieczności przechodzenia do innych stron, co było postrzegane jako powolne i powodowało miganie dużego białego prostokąta na ekranie pomiędzy dwiema stronami. Było takie zdanie spopularyzowane przez Jeffa Atwooda (założyciela StackOverflow), które brzmiało: „Każda aplikacja, którą można napisać w JavaScript, ostatecznie zostanie napisana w JavaScript” – Jeff Atwood

W tamtym czasie wydawało nam się, że mamy odwagę stworzyć takie aplikacje. To było jak ogólna zgoda na robienie wszystkiego z JS. Zrobiliśmy więc wszystko w JS i tak naprawdę nie traciliśmy czasu na szukanie innych sposobów działania. Tak naprawdę nie czuliśmy motywacji, aby właściwie poznać możliwości HTML i CSS. Tak naprawdę nie postrzegaliśmy sieci jako całości rozwijającej się platformy aplikacji. Przeważnie postrzegaliśmy to jako coś, nad czym musimy popracować, szczególnie jeśli chodzi o obsługę przeglądarek. Moglibyśmy po prostu rzucić na to więcej JS, żeby załatwić sprawę. Czy poświęcenie czasu na dowiedzenie się więcej o tym, jak działa sieć i co jest dostępne na platformie, pomogłoby mi? Jasne, prawdopodobnie mógłbym wygolić trochę kodu, który nie był tak naprawdę potrzebny. Ale w tamtym czasie może nie aż tak bardzo. Widzisz, różnice w przeglądarkach były wtedy dość znaczące. Był to czas, gdy Internet Explorer był nadal dominującą przeglądarką, a Firefox znajdował się tuż obok, ale zaczął tracić udział w rynku ze względu na szybki wzrost popularności przeglądarki Chrome. Chociaż Chrome i Firefox dość dobrze uzgadniały standardy sieciowe, środowiska, w których działały nasze aplikacje, sprawiły, że przez długi czas musieliśmy wspierać IE6. Nawet gdy pozwolono nam obsługiwać IE8, nadal musieliśmy radzić sobie z wieloma różnicami między przeglądarkami. Co więcej, ówczesna sieć po prostu nie miała tak wielu funkcji wbudowanych bezpośrednio w platformę.

Przejdźmy szybko do dzisiaj. Wszystko zmieniło się ogromnie. Nie tylko mamy więcej tych możliwości niż kiedykolwiek wcześniej, ale także wzrosło tempo ich udostępniania. W takim razie zadam jeszcze raz pytanie: czy poświęcenie czasu na dowiedzenie się więcej o tym, jak działa sieć i co jest dostępne na platformie, pomogłoby Ci dzisiaj? Absolutnie tak. Dzisiejsza nauka zrozumienia i korzystania z platformy internetowej daje Ci ogromną przewagę nad innymi programistami. Niezależnie od tego, czy pracujesz nad wydajnością, dostępnością, responsywnością, wszystkim razem, czy po prostu dostarczasz funkcje interfejsu użytkownika, jeśli chcesz to robić jako odpowiedzialny inżynier, znajomość dostępnych Ci narzędzi pomoże Ci szybciej i lepiej osiągnąć swoje cele. Niektóre rzeczy, do których możesz nie potrzebować już biblioteki Wiedząc, jakie przeglądarki obsługują obecnie, pojawia się pytanie: z czego możemy zrezygnować? Czy w 2025 r. potrzebujemy komponentu div do zaokrąglania rogów? Oczywiście, że nie. Właściwość border-radius jest obsługiwana przez wszystkie obecnie używane przeglądarki od ponad 15 lat. Wkrótce dostępny będzie także kształt narożnika, który umożliwi zastosowanie jeszcze bardziej wyszukanych narożników. Przyjrzyjmy się stosunkowo nowym funkcjom, które są teraz dostępne we wszystkich głównych przeglądarkach i których można użyć do zastąpienia istniejących zależności w bazie kodu. Nie chodzi o to, aby od razu porzucić wszystkie ulubione biblioteki i przepisać bazę kodu. Jeśli chodzi o wszystko inne, musisz najpierw wziąć pod uwagę obsługę przeglądarki i podjąć decyzję na podstawie innych czynników specyficznych dla Twojego projektu. Poniższe funkcje są zaimplementowane w trzech głównych silnikach przeglądarek (Chromium, WebKit i Gecko), ale możesz mieć inne wymagania dotyczące obsługi przeglądarek, które uniemożliwiają ich natychmiastowe użycie. Jednak teraz jest dobry moment, aby dowiedzieć się o tych funkcjach i być może zaplanować ich użycie w pewnym momencie. Popover i okna dialogowe Interfejs API Popover, element HTML

i pseudoelement ::backdrop mogą pomóc Ci pozbyć się zależności od wyskakujących okienek,podpowiedzi i biblioteki okien dialogowych, takie jak Floating UI, Tippy.js, Tether lub React Tooltip. Od razu zajmują się zarządzaniem dostępnością i skupieniem, można je w dużym stopniu dostosowywać za pomocą CSS i można je łatwo animować. Akordeony Element
, jego atrybut name dla wzajemnie wykluczających się elementów i pseudoelement ::details-content eliminują potrzebę stosowania komponentów akordeonowych, takich jak Bootstrap Accordion lub komponent React Accordion. Samo korzystanie z tej platformy oznacza, że ​​osobom znającym HTML/CSS łatwiej będzie zrozumieć Twój kod bez konieczności wcześniejszej nauki korzystania z określonej biblioteki. Oznacza to również, że jesteś odporny na zakłócanie zmian w bibliotece lub zaprzestanie jej udostępniania. I oczywiście oznacza to mniej kodu do pobrania i uruchomienia. Wzajemnie wykluczające się elementy szczegółów nie wymagają JS do otwierania, zamykania ani animacji. Składnia CSS Warstwy kaskadowe zapewniają bardziej zorganizowaną bazę kodu CSS, zagnieżdżanie CSS, bardziej kompaktowy CSS, nowe funkcje kolorów, kolory względne i mieszanie kolorów, nowe funkcje matematyczne, takie jak abs(), znak(), pow() i inne pomagają zmniejszyć zależności od preprocesorów CSS, bibliotek narzędziowych, takich jak Bootstrap i Tailwind, a nawet bibliotek wykonawczych CSS-in-JS. Zmieniacz gry :has(), jedna z najbardziej pożądanych funkcji od dłuższego czasu, eliminuje potrzebę stosowania bardziej skomplikowanych rozwiązań opartych na JS. Narzędzia JS Nowoczesne metody Array, takie jak findLast() lub at(), a także metody Set, takie jak różnica(), skrzyżowanie(), union() i inne, mogą zmniejszyć zależności od bibliotek, takich jak Lodash. Zapytania dotyczące kontenerów Zapytania kontenerowe sprawiają, że komponenty interfejsu użytkownika reagują na rzeczy inne niż rozmiar widocznego obszaru, dzięki czemu można je łatwiej wykorzystać w różnych kontekstach. Nie ma już potrzeby używania w tym celu biblioteki interfejsu użytkownika obciążonej JS i nie ma potrzeby używania wypełniacza. Układ Grid, subgrid, flexbox czy multi-column są dostępne już od dłuższego czasu, ale patrząc na wyniki ankiet dotyczących stanu CSS, staje się jasne, że programiści są bardzo ostrożni w przyjmowaniu nowych rzeczy i czekają bardzo długo, zanim to zrobią. Te funkcje były przez długi czas bazowe i można było ich użyć, aby pozbyć się zależności od takich rzeczy, jak system siatki Bootstrap, narzędzia flexbox Foundation Framework, stała siatka Bulma, siatka Materialise lub kolumny Tailwind. Nie mówię, że powinieneś porzucić swój framework. Twój zespół przyjął to nie bez powodu, a usunięcie go może być dużym projektem. Ale spojrzenie na to, co platforma internetowa może zaoferować bez zewnętrznego opakowania, wiąże się z wieloma korzyściami. Rzeczy, których możesz już nie potrzebować w najbliższej przyszłości Rzućmy teraz okiem na niektóre rzeczy, do których biblioteka nie będzie Ci potrzebna w najbliższej przyszłości. Oznacza to, że poniższe rzeczy nie są jeszcze całkowicie gotowe do masowego przyjęcia, ale świadomość ich istnienia i planowanie potencjalnego późniejszego wykorzystania może być pomocne. Pozycjonowanie kotwicy Pozycjonowanie kotwicy CSS obsługuje położenie wyskakujących okienek i podpowiedzi względem innych elementów i dba o to, aby były one widoczne, nawet podczas przenoszenia, przewijania lub zmiany rozmiaru strony. Jest to świetne uzupełnienie wspomnianego wcześniej Popover API, które jeszcze bardziej ułatwi migrację od bardziej wydajnych rozwiązań JS. API nawigacji Interfejs API nawigacji może być używany do obsługi nawigacji w aplikacjach jednostronicowych i może być doskonałym uzupełnieniem lub nawet zamiennikiem zadań routingu React Router, Next.js lub Angular. Wyświetl interfejs API przejść Interfejs API przejść widoku może animować pomiędzy różnymi stanami strony. W aplikacji jednostronicowej sprawia to, że płynne przejścia między stanami są bardzo łatwe i mogą pomóc w pozbyciu się bibliotek animacji, takich jak Anime.js, GSAP lub Motion.dev. Co więcej, interfejsu API można używać także w aplikacjach wielostronicowych. Pamiętasz, jak mówiłem wcześniej, że powodem, dla którego zbudowaliśmy aplikacje jednostronicowe w firmie, w której pracowałem 15 lat temu, było uniknięcie białego błysku podczas ponownego ładowania strony podczas nawigacji? Gdyby ten interfejs API był wówczas dostępny, bylibyśmy w stanie osiągnąć piękne efekty przejścia stron bez struktury jednostronicowej i bez ogromnego początkowego pobierania całej aplikacji. Animacje sterowane przewijaniem Animacje sterowane przewijaniem działają w zależności od pozycji przewijania użytkownika, a nie w czasie, co czyni je doskonałym rozwiązaniem do opowiadania historii i wycieczek po produktach. Niektórzy ludzie przesadzili z tym, ale dobrze użyte może być bardzo skutecznym narzędziem do projektowania i może pomóc pozbyć się bibliotek takich jak: ScrollReveal, GSAP Scroll lubWOW.js. Konfigurowalne wybory Konfigurowalny wybór to normalny element

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free