Wpisy z kategorii JavaScript
-
Makrony
Nie tak dawno temu Bun pokazał makra. Spodobały mi się na tyle, że postanowiłem spróbować przenieść je do Rollupa.
-
Cienie przeszłości
Niektóre rzeczy w webdevie wydają się nie być przesadnie ekscytujące. No bo czymże może nas zaskoczyć atrybut [onclick]? Cóż, okazuje się, że wieloma rzeczami.
-
Jak strzelić sobie różdżką w stopę, część 2.
W czerwcu 2021 opisywałem nieco mój pomysł na pakiet testowy dla reszty moich projektów. Ostatecznie jednak postanowiłem, że nie będę go dłużej rozwijał, ponie…
Czytaj całość postu Jak strzelić sobie różdżką w stopę, część 2.
-
Tworzymy własny bundler typów
Nieco ponad rok temu opisałem proces tworzenia prymitywnego bundlera. Nie tak dawno zacząłem się zastanawiać, czy dałoby się go w prosty sposób dostosować do b…
-
Bramkarz na urlopie
Byłem zmuszony podjąć decyzję o zakończeniu projektu Bramkarz, który rozpocząłem jakieś 2 miesiące temu. W tym wpisie pokrótce wyjaśnię dlaczego. Dziurawe zabe…
-
Bramkarz
Ostatnio natrafiłem na projekt Hagana, który oferuje ochronę w trakcie wykonywania skryptu Node.js. Polega ona na blokowaniu operacji sieciowych oraz operacji …
-
Mutowalna niemutowalność
Istnieje sobie taka biblioteka jak Immer. W największym skrócie można powiedzieć, że jest ona w świecie niemutowalności tym, czym składnia async/await w świeci…
-
Najprostszy event emitter w przeglądarce
Praca z DOM prędzej czy później wymusi na każdym zapoznanie się z event listenerami. Ten prosty mechanizm pozwala nam reagować w momencie, gdy w aplikacji siec…
Czytaj całość postu Najprostszy event emitter w przeglądarce
-
Jeden znak jest warty więcej niż tysiąc ifów
Czasami niektóre błędy są bardzo trudne do zdebugowania, bo występują stosunkowo rzadko, a i czają się w miejscach, w których byśmy się ich nie spodziewali.
Czytaj całość postu Jeden znak jest warty więcej niż tysiąc ifów
-
Jak strzelić sobie różdżką w stopę?
W życiu niemal każdego programisty przychodzi taki moment, w którym stwierdza, że w jego kodzie przyda się więcej magii. A potem za zabawę z tymi ciemnymi moca…
-
Rewolucja klasowa
Swego czasu powszechną wiedzą było to, że klasy stanowiły wyłącznie cukier składniowy dla prototypów. Tak też sprawę ująłem w swojej książce (JavaScript. Progr…
-
Oswojony Zalgo
Wieki temu Isaac Z. Schlueter napisał artykuł na temat projektowania asynchronicznyczh API. Przestrzegł w nim przed wypuszczaniem na świat Zalgo.
-
Jak działa narzędzie do code coverage?
Dzisiaj kontynuujemy zabawy z AST. Tym razem padło na narzędzie do code coverage!
-
Tworzymy własny bundler
Bądźmy szczerzy: praktycznie wszyscy używamy jakiegoś bundlera, ale prawie nikt z nas swojego bundlera nie lubi (na Ciebie patrzę, webpack…). Może by tak zatem…
-
Toć to najprawdziwsza twarz…!
Google wierzy, że Sieć może konkurować z natywnymi aplikacjami bez żadnego wstydu. Jednym z obszarów, na którym aplikacje sieciowe były słabsze od swoich natyw…
-
Hipermodularyzacja, czyli Rzym płonie
— Wybacz, boski imperatorze — rzekł zdyszanym głosem Faon — w Rzymie pożar! większa część miasta w płomieniach!... Na tę wiadomość wszyscy zerwali się z miejsc…
-
I cięcie!
Ostatnio dziwnie popularny zrobił się temat anulowania pobierania danych przez fetch. Wydaje mi się jednak, że umyka przy tym pewna istotna kwestia: to rozwiąz…
-
HTML w Node.js
Czasami można używać pewnej technologii od lat i nie zorientować się, że gdzieś tam głęboko chowa pewną małą, acz diabelnie przydatną funkcję. Tak jest też w p…
-
Goto
We wrześniu zastanawiałem się nad tym, jak obsługiwać asynchroniczność w ES3. Wspominałem tam o mechanizmach pozwalających na przekazywanie sterowania. Otóż my…
-
async/await w ES3
Sensowne narzędzia do obsługi asynchroniczności pojawiły się w JavaScripcie stosunkowo późno, bo dopiero w ES6. W jednej z późniejszych wersji pojawiła się też…
-
Ujemne indeksy tablicy
Jedną z ciekawszych rzeczy w języku Python są bez wątpienia ujemne indeksy tablic (list). Służą one do operowania na tablicy “od tyłu”. Na przykład:
-
Aktualna data bez daty
Dzisiaj na Facebooku ktoś zadał ciekawe pytanie: jak w JS wyświetlić aktualną datę i czas, nie używając Date ani nie pobierając czasu z żadnego zewnętrznego źr…
-
System polyfillów
Pod koniec tamtego roku trafiłem na artykuł o leniwym wczytywaniu polyfillów. Były one wczytywane w kodzie aplikacji przy pomocy import. Niemniej zupełnie nie …
-
O abstrakcji słów kilka
Ostatnio miałem przyjemność przeczytać książkę Nicholása Bevacquy Mastering Modular JavaScript. Z racji tego, że książka ta porusza bardzo szeroko rolę abstrak…
-
Bujając się na gałęzi AST
Istnieją rzeczy, na które zwykle nie zwracamy jakiejkolwiek uwagi, po prostu przyjmując ich istnienie za pewnik lub nie musząc się nimi całkowicie przejmować. …
-
Przesunięcie sourcemapy
W ten weekend mierzyłem się z kolejnym błędem w moim najsłynniejszym projekcie na GitHubie – niepoprawnym generowaniem sourcemapy. Problem okazał się na tyle c…
-
Niestandardowe zdarzenia w workerach
W przypadku skryptów korzystających z DOM stworzenie własnych, niestandardowych zdarzeń jest banalnie proste i sprowadza się do utworzenia nowej instancji Cust…
-
Kwacze jak kaczka…
Typy proste w JavaScript są nieco specyficzne, bo można ich używać jak obiekty. W końcu kto z nas nie użył nigdy metody replace na zwykłym ciągu tekstowym? Ale…
-
Uniwersalny getter
Chociaż magia niezbyt idzie w parze z programowaniem, to mimo to polubiłem PHP-owe metody magiczne, wśród których chyba najbardziej przypadło mi do gustu __get…
-
Jednoplikowe komponenty
Chyba każdy, kto miał styczność z frameworkiem Vue, słyszał również o jego jednoplikowych komponentach. Ten super prosty pomysł pozwala definiować cały kod odp…
-
Asynchroniczny DOM
Ostatnio natrafiłem na artykuł opisujący, jak działa React Fiber i doznałem momentu z cyklu “hej, przecież ja to znam!”. Ba, koncept użyty w React 16 do poleps…
-
TDZ
Piekło zamarzło! Przyszedł dzień, w którym Comandeer posypuje głowę popiołem i przyznaje się do błędu.
-
Interfejsy w JS
Wszyscy kochamy Javę, dlatego wszyscy chcemy interfejsów w JS, prawda?
-
Deklaratywny Shadow DOM
W swoim poprzednim wpisie rozpisałem się co nieco o mutowaniu DOM-u i obiecałem, że następnym razem pokażę sensowny przykład jego zastosowania. Ten czas właśni…
-
Zmutowany DOM
DOM jest jak żywy organizm. A każdy żywy organizm umie kilka podstawowych czynności, wśród których znajduje się… mutowanie!
-
Wszechświaty równoległe
Co to, Comandeer się przerzucił na fizykę kwantową? Nic z tych rzeczy, wciąż tylko JavaScript! Niemniej dzisiaj porozmawiamy sobie o… sferach.
-
Prymitywna implementacja mitycznej funkcji React.createElement
Każdy, kto choć trochę bawił się Reactem (czy naprawdę jestem jedynym, którego nigdy do tego nie ciągnęło?!), zapewne zauważył, że pod spodem JSX-a znajduje si…
Czytaj całość postu Prymitywna implementacja mitycznej funkcji React.createElement
-
Reduce i formatowanie tekstu
Zapewne niektórzy się oburzą, co to za obrzydłe herezje ten Comandeer głosi: jak to można używać Array.prototype.reduce do formatowania tekstu?! Ano, można i j…
-
BEM jako architektura
Co bardziej zaznajomieni z moją osobą zapewne już zorientowali się, że udało mi się napisać książkę. Tworzę w niej bibliotekę BEMQuery (wrócę do niej kiedyś… s…
-
CSS w JS – mity o mitach
Wszyscy, którzy mnie znają, wiedzą doskonale, że w przypadku Sieci należę raczej do konserwatystów, będących wyznawcami starego porządku. To uwielbienie dla tr…
-
Skok z wieży Babel
Przecież najpopularniejsze narzędzie w ekosystemie JS nie może być całkowicie zepsute i dodatkowo nie posiadać żadnej sensownej dokumentacji, prawda? Jeśli na …
-
Potrzebujemy zachowań, nie dziedziczenia!
This article is also available in English!
Czytaj całość postu Potrzebujemy zachowań, nie dziedziczenia!
-
Web Components – koszmar minionego lata
Ach, moje kochane Web Components, o których – jak to zauważają i wytykają mi nieraz znajomi – mogę rozprawiać godzinami, a i tak mi mało. Gadałem o nich na żyw…
-
Drzewko dostępności udostępnione!
Tematyka dostępności bardzo mnie ciekawi, czego najlepszym dowodem jest mój wpis na temat tworzenia własnego czytnika ekranowego. Wspominałem w nim o drzewku d…
-
ComSemRel – co to?
Skoro do 31 maja będę musiał z wielką przyjemnością rozwijać projekt o jakże pięknej nazwie ComSemRel, wypadałoby przynajmniej napisać, co to takiego.