Pristatome new-js-clock
Daugiau nei prieš 15 metų paskelbiau nedidelį jQuery papildinį pavadinimu JS-Clock. Tai buvo paprastas valdiklis, kuris DOM elemente vaizdavo tiksintį laikrodį — naudingas, paprastas ir visiškai atitinkantis savo laikmetį. Jis priklausė nuo jQuery, turėjo tam tikrų problemų su kelių egzempliorių palaikymu ir niekada nebuvo reikšmingai atnaujintas po to pirmojo leidimo.
Šiandien tai keičiasi. Išleidžiu new-js-clock 1.0.0 — nuo pagrindų perrašytą TypeScript versiją, kuri išsaugo originalo dvasią ir palieka užnugaryje kiekvieną jo apribojimą. Ją veikiančią galite pamatyti demonstracinėje svetainėje.
Kas nauja 1.0.0 versijoje
Viskas, kas pateikiama šiame leidime:
- 🔒 TypeScript — Visiškas tipų saugumas su išsamiomis sąsajomis visoje kodų bazėje.
- 🌐 E2E + vienetų testų rinkinys — Deterministinė Jest aprėptis ir Selenium E2E naršyklių testai, įskaitant išplėstinį fono skirtukų elgsenos tikrinimą.
- 📦 Nulinė priklausomybė — Grynasis vanilla JavaScript. jQuery nereikia.
- 🐛 Klaidų ištaisymai — Kelių egzempliorių palaikymas dabar veikia teisingai — tai buvo pagrindinė problema 0.8 versijoje.
- ⚡ Šiuolaikinis API — Švarus, intuityvus API su tinkamais egzempliorių metodais kiekviename sukurtame laikrodyje.
- 🧪 Visiškai ištestuota — 162 deterministiniai Jest testai su 99,74 % eilučių aprėptimi, 99,02 % teiginių aprėptimi, 100 % funkcijų aprėptimi ir 98,32 % šakų aprėptimi.
- 🐳 Dockerizuotas E2E tinklelis — Selenium Grid, paleidžiantis headless Chrome, Firefox ir Edge lokaliai ir CI aplinkoje naudojant
pnpm run e2e:docker. - 📱 ES moduliai — ES Module importai su tree-shaking palaikymu, kartu su CommonJS ir IIFE paketais.
- 🌍 DST palaikančios laiko juostos — IANA laiko juostų palaikymas su automatiniu vasaros laiko tvarkymu.
- ⏱️ Chronometro režimas — Naujas chronometras, skaičiuojantis nuo 00:00:00.
- 🏁 Rato ir split laikai — Fiksuokite ratų laikus (delta) ir kaupiamąjį laiką (split) chronometro režime.
- 📊 Geriausias/blogiausias ratas — Įtaisytos pagalbinės funkcijos greičiausio ir lėčiausio rato paieškai per sesiją.
- 🎯 Aukštos raiškos laikavimas — Rato deltos matuojamos per
performance.now()su tikslumu iki milisekundės dalies.
Diegimas
npm install new-js-clock
# arba
pnpm add new-js-clock Taip pat prieinama per CDN tiesioginiam naudojimui naršyklėje — žr. README unpkg ir jsDelivr nuorodoms.
Kodėl tai užtruko tiek ilgai?
Atvirai? Gyvenimas. Originalus JS-Clock buvo parašytas mano velionies draugo Gustavo Beltrão prašymu (tuo metu tikro PHP meistro, su kuriuo turėjau privilegiją dirbti daugiau nei vieną kartą) naudoti įmonių vidaus informaciniuose skydeliuose ir vieno puslapio svetainėse renginiams su lankytojais iš skirtingų laiko juostų. Jis atliko savo darbą pakankamai gerai, kad niekada neatrodė skubu jį peržiūrėti. Tačiau jQuery jau seniai išnyko iš šiuolaikinių projektų, TypeScript tapo bibliotekų kūrimo standartu, o kelių egzempliorių palaikymo klaida visada mane erzino. Kai pagaliau atsisėdau ją tinkamai ištaisyti, buvo prasminga padaryti tai gerai — su tipais, testais, šiuolaikine modulių sistema ir pakankamai funkcijų, kad 2026 metais būtų tikrai naudingas. Be to, planuoju jį naudoti kitame savo komerciniame projekte.
Geriau vėliau nei niekada.
Vienam Jėzui Kristui tebūna šlovė!