PR0GRAMISTA
Workdone, ponownie

Workdone jako projekt na "Daj Się Poznać 2017" miał być wymagający i wnoszący coś nowego do świata produktywności, ale wyszło jak zawsze. Budowa klienta webowego połączyła się z nauką nowego JSa i proces znacząco się wydłużył, ale ostatnio wpadłem na pewien pomysł.

Todo listy nie działają

Próbowałem używać Google Keep, a teraz Todoist i wnioski są następujące: nie obchodzą mnie powiadomienia, cyferki w przeglądarce — nic. Za to obchodzi mnie to kiedy coś ma być zrobione — deadline. Gdybym widział, czuł, że czas mija to może szybciej bym się do tego zabrał. Nowy Workdone ma dostarczać to wrażenie przez odliczanie czasu rodem z horrorów czy tykających bomb i powiadomienia krzyczące "Hej, tutaj rzeczywistość, czas coś zrobić".

Dobra, pomysł jest, ale co z wykonaniem? Wracać do JSa i znów się tam mordować? Oczywiście nie mam zamiaru i spróbuję czegoś innego — powrotu do korzeni.

Framework as a Language

Każdy frontendowy framework to prawie jak osobny język. Ba! Niektóre frameworki tworzą swoje własne formaty plików. Moje pytanie brzmi: czy tego potrzebujemy? Czy tak bardzo potrzebujemy bindowania, komponentów i szablonów? Może, ale w kwestii optymalizacji zapytania do tylko jednego pliku mamy HTTP 2.0 z server push, które tak nowe nie jest. Spróbujmy zatem nie używać frameworka.

CSS

CSS stale dostaje nowe funkcjonalności, które sprawią, że za kilka lat pożegnamy SASSa czy LESSa. Już teraz większość przeglądarek obsługuje zmienne w CSS. Oczywiście to nie znaczy, że za chwilę wszyscy rzucimy nasze preprocesory, bo jeszcze trochę brakuje i z tego też powodu pozwoliłem sobie użyć SASSa, szczególnie, że używam bardzo małej części jego funkcjonalności.

Dobry początek

Bez frameworków to i bez jQuery. Nie jest już tak potrzebne jak to było kiedyś. Tutaj odeślę was do postu z css-tricks.com: (Now More Than Ever) You Might Not Need jQuery.

Na początku dodałem sobie API Firebase i routing w prymitywnej postaci przełączania pola display na poszczególnych elementach DOM. Pisałem szybko, bez potrzeby szukania rozwiązania i było to nawet przyjemne. PStworzony w taki sposób kod nie jest najpiękniejszy, ale łatwo jest go podzielić, zdebugować i pokochać. To taki powrót do odmienionej przeszłości jak w Go. Jedyne co sprawiło mi problem to walidacja i ograniczanie inputa.

<input id="deadline-day" onkeypress='return event.charCode >= 48 && event.charCode <= 57' placeholder="1" maxlength="2" />.
<input id="deadline-month" onkeypress='return event.charCode >= 48 && event.charCode <= 57' placeholder="1" maxlength="2" />.
<input id="deadline-year" onkeypress='return event.charCode >= 48 && event.charCode <= 57' placeholder="2017" maxlength="4" />
<input id="deadline-hour" onkeypress='return event.charCode >= 48 && event.charCode <= 57' placeholder="12" maxlength="2" />:
<input id="deadline-minute" onkeypress='return event.charCode >= 48 && event.charCode <= 57' placeholder="00" maxlength="2" />

Chyba powinienem to jakoś inaczej zrobić.

Material Design

Chciałem aby Workdone jakoś wyglądał i byłem zdumiony jak wiele można uzyskać bez konieczności sięgania po wielkie komponenty, gotowe arkusze. W chwili słabości dodałem sobie BassCSS, nie użyłem go do tej pory ani razu. Efekty mojej pracy możecie zobaczyć na tym SSie:

Nowy dashboard

EOF

Wielkie aplikacje zwykle potrzebują wielkich frameworków, ale czy aby napewno twoja aktualna lub przyszła aplikacja zalicza się do tych wielkich? Ja polecam ten eksperyment a szczególnie w połączeniu z nowymi zabawkami w CSSie. Sprawdźcie takie zabawki jak flex (obowiązkowo), grid layout, variables czy features. Inną sprawą jest Service Worker i WebAssembly. Web idzie w dobrą stronę i warto się przyłączyć do tego ruchu.

22 lipca 2017
workdone javascript