JavaScript

Francesco Ciannavei

JavaScript

JavaScript è stato il mio primo linguaggio: ho iniziato nel 2019 con l'API di Discord, e lo scrivo da {{yearsOfExperience}} anni, sia sul frontend sia, con Node.js, sul backend. Ho lavorato sia con ES5 nelle codebase legacy sia con le feature più recenti del linguaggio.

Due anni di frontend Magento 2

In TUN2U ho lavorato per due anni sul frontend di negozi Magento 2, un ecosistema JavaScript molto particolare. Ho scritto configurazioni RequireJS, il module loader di Magento, gestendo path, shim e strategie di bundling. E ho sviluppato numerosi componenti UI in KnockoutJS, il framework MVVM integrato in Magento 2, con binding, observable e sistema di template. In generale, in TUN2U quasi tutto il JavaScript che scrivevo era jQuery, e quasi niente vanilla.

Asincronia e performance

Nel mio JavaScript lavoro molto con l'asincronia: event loop, callback, Promise e async/await, con i pattern per evitare callback hell e race condition. Sul rendering sto attento a reflow e repaint, uso debouncing e throttling per gli eventi ad alta frequenza, e le API native del browser come IntersectionObserver e MutationObserver quando servono.

Una libreria per scalare in pixel

Con scale in CSS un bottone grande cresce più di uno piccolo. Ho scritto JS-Lib-Scale per farli crescere tutti dello stesso numero di pixel, e la usano i link dell'header di questo sito. È spiegata nell'articolo dedicato.

TypeScript sull'edge

Il CDN che ridimensiona e converte le immagini di questo sito è un Cloudflare Worker che ho scritto in TypeScript: è raccontato nella pagina su Cloudflare.

Il frontend di questo sito

Il sito che stai leggendo ha il frontend in Astro, e nell'ecosistema Astro ho due pull request accettate: entrambe le storie sono nella pagina su Astro. Per gli strumenti di lavoro uso Webpack, Babel, ESLint e Jest per i test.

Da dove sono partito

I primi programmi erano bot Discord in Node.js, e da lì ho imparato a scrivere codice che resta online e risponde a eventi.

Rating
9/10

Dove l'ho usato: