Framework or not framework

Kolejnym artykułem, który znalazł się na mojej liście TODO jest ten dotyczący pytania z tytułu tego tekstu.
Używać frameworków takich jak Bootstrap i Foundation, czy może na wieki je przekląć?

Gdy zadasz powyższe pytanie na grupie frontendowej do której i ja należę, szybko dostaniesz liczne odpowiedzi, że frameworki takie jak Bootstrap, Foundation itp nie mają większego sensu, a zamiast ich powinieneś pisać własny kod.

Jest w tym sporo racji.

Większość z was pewnie wie, z czym się wiąże używanie takich frameworków i ileż niesie to z sobą minusów.

Pierwszym minusem jaki przychodzi mi na myśl jest zaśmiecanie CSS. Musimy tworzyć masę stylowania, które służy tylko do nadpisywania domyślnego wyglądu udostępnianego przez takie frameworki. W wielu gotowych admin panelach są osobne pliki ze stylami „overwrite”, które służą tylko nadpisaniu domyślnego wyglądu. Bardzo często przewijają się w nich deklaracje !important, które nie są zalecane.

Drugim minusem jest zmuszenie nas do używania często zbyt skomplikowanych selektorów. Przykładowo gdybym stylował TD w tabelce, pewnie zrobiłbym to poprzez użycie prostego selektora

.table td {...}

Niestety w takim bootstrapie taki selektor by nie zadziałał, bo jest zbyt mało precyzyjny. Domyślne stylowanie bootstrapa dla TD ma postać

.table > tbody > tr > td {...}

i by je nadpisać albo użyjemy !important, albo użyjemy selektora minimum takiej precyzji.

Kolejnym minusem jest nadmiarowy kod. Gdy korzystamy z klasycznego dołączania plików css/js takich bibliotek (a nie wybierania z źródłowych plików rzeczy które realnie używamy, co jest zresztą dodatkową pracą), dostajemy masę nadmiarowego kodu który tylko leży i pachnie (pewnie znacie te częste narzekanie na „olbrzymią” wagę jQuery).

Jeszcze innym minusem, który nasuwa mi się na myśl jest spowolnienie naszego rozwoju. Jedną z najważniejszych rzeczy, które powinien opanowywać każdy webmaster są techniki. To jak sztuki walki, które powinien znać każdy mistrz. Chcę zrobić modal? Jak mam to zrobić najlepiej? Chcę zrobić nawigację? Jak mam ją zrobić tak by była przystępna i ładna? Wyszukiwanie? Nie musi to być proste pole w belce nawigacji (jakie udostępnia bootstrap) ale równie dobrze może to być coś o wiele fajniejszego. To tylko przykłady, które powtarzają się w pytaniach od osób, które zamiast nauki technik, od razu zaczęli używać gotowych frameworków.

Z jednej strony więc tyle pisze się o optymalizacji naszych zadań i przyśpieszaniu pracy, z drugiej poprzez powyższe czynności dodajemy sobie roboty…

I mógł bym wymieniać tak kolejne minusy tłamsząc kolejne frameworki. Ale…

Był kiedyś taki wpis w sieci, który zapadł mi w pamięci. Było to dawno i niestety ani moje zakładki, ani moja głowa nie możemy sobie przypomnieć dokładnego tytułu. Dlatego właśnie nazwałem go w pamięci Adobevitis – od choroby która często spotyka ludzi z naszej branży.

Divitis bo o niej mowa to choroba, która polega na uzależnieniu od divów. Zamiast stosować odpowiednie znaczniki dla danej treści (czyli szanować semantykę) sporo webmasterów używa samych divów. Wpis tamten traktował o mniej więcej podobnym problemie. Tyczył się jednak narzędzi, które często nas uzależniają, ale równie często ograniczają. Już wtedy zauważyłem, że było w tym sporo racji.

Od jakiegoś czasu wracam do tego co lubię – rysowania. Początkowo gdy zaczynałem przygodę z komputerowym rysunkiem, proces taki wyglądał tak, że rysowałem ołówkiem na kartce w kratkę, a następnie skanowałem takie rysunki i obrabiałem je w programie graficznym. Ołówek fajna sprawa. Chodzi jak marzenie, można rysować co dusza zapragnie, w niczym praktycznie mnie nie ogranicza. Jedynym ograniczeniem są moje umiejętności.
Potem gdy poznałem program Adobe Ilustrator, z czasem olałem rysunki ołówkiem od razu rysując w tym programie. Z perspektywy czasu powiem, że to nie był najlepszy wybór, bo przez walkę z rysowaniem równych, nie rwanych linii moje prace straciły ten charakterystyczny nieco chaotyczny styl, który tak mi się podobał.

Czy to oznacza, że Ilustrator jest złym programem?

Nie. Oznacza to tylko tyle, że jest niewłaściwym narzędziem do pewnych zadań.

W moim przypadku ołówek jest lepszym wyborem. W przypadku wielu innych zadań lepszym wyborem okaże się Ilustrator czy Photoshop.

Z frameworkami jest podobnie. Jasne – gdy tworzymy prostą stronkę, na której większość elementów jest mocno „customowa”, wtedy korzystanie Bootstrapa raczej mija się z celem. Używanie takiego narzędzia tylko po to by mieć odfajkowane w opisie jego użycie, a równocześnie dorzucanie sobie masy dodatkowej niepotrzebnej pracy nie ma zbytniego sensu.
Często jednak będziemy tworzyć systemy powiedzmy na przykład cms’owe. Wtedy użycie takiego frameworka może nam mocno przyśpieszyć pracę. Tabele, dropdowny itp komponenty mamy gotowe, ich wygląd jest spójny i czytelny – więc czego chcieć więcej. Dodatkowo używając takiego frameworka sprawiamy, że pisany przez nas kod zyskuje jakąś standaryzację. Chcesz użyć dropdowna? Nie będziesz go pisał za każdym razem inaczej, a użyjesz kodu jaki daje ci framework. Programiści z twojego zespołu szybko odnajdą się w takim kodzie.

Odpowiadając więc na pytanie z tytułu. Czy używanie frameworków ma sens? Jak to mawiają Amerykańscy naukowcy – „i tak i nie”. A wszystko zależy od danej sytuacji i wymagań. Co ma szczególne znaczenie w dzisiejszej webmasterce, która nie tylko zapewnia nam regularny wysyp nowych narzędzi, ale i wielu przypadkach durnie podąża za modą, tworząc przy tym problemy, które dawno zostały rozwiązane za pomocą innych narzędzi.

Częstokroć to nie same narzędzia są złe, a zły ich dobór.

Komentarze