Iepazīstinām ar new-js-clock
Pirms vairāk nekā 15 gadiem publicēju nelielu jQuery spraudni ar nosaukumu JS-Clock. Tā bija vienkārša logrīka, kas DOM elementā attēloja ticošo pulksteni — noderīga, vienkārša un pilnīgi savas laika gara atspulgs. Tā bija atkarīga no jQuery, tai bija dažas problēmas ar vairāku instanču atbalstu, un pēc pirmā laidiena tā nekad netika jēgpilni atjaunināta.
Šodien tas mainās. Izlaižu new-js-clock 1.0.0 — no pamata pārrakstītu TypeScript versiju, kas saglabā oriģināla garu, atstājot aiz sevis katru tā ierobežojumu. To darbībā varat redzēt demonstrācijas lapā.
Kas jauns versijā 1.0.0
Viss, kas nāk šajā laidienā:
- 🔒 TypeScript — Pilnīga tipu drošība ar visaptverošām saskarnēm visā koda bāzē.
- 🌐 E2E + vienību testu komplekts — Deterministisks Jest pārklājums plus Selenium E2E pārlūkprogrammu testi, tostarp paplašināta fona cilņu uzvedības validācija.
- 📦 Nulles atkarības — Tīrs vanilla JavaScript. jQuery nav nepieciešams.
- 🐛 Kļūdu labojumi — Vairāku instanču atbalsts tagad darbojas pareizi — tā bija galvenā problēma versijā 0.8.
- ⚡ Mūsdienīgs API — Tīrs, intuitīvs API ar pareizām instanču metodēm katrā izveidotajā pulkstenī.
- 🧪 Pilnīgi pārbaudīts — 162 deterministiski Jest testi ar 99,74 % rindu pārklājumu, 99,02 % paziņojumu pārklājumu, 100 % funkciju pārklājumu un 98,32 % zaru pārklājumu.
- 🐳 Dockerizēts E2E tīkls — Selenium Grid, kas lokāli un CI vidē palaiž headless Chrome, Firefox un Edge, izmantojot
pnpm run e2e:docker. - 📱 ES moduļi — ES Module importi ar tree-shaking atbalstu, līdzās CommonJS un IIFE paketēm.
- 🌍 DST apzinātās laika joslas — IANA laika joslu atbalsts ar automātisku vasaras laika apstrādi.
- ⏱️ Hronometra režīms — Jauns hronometrs, kas skaita no 00:00:00.
- 🏁 Apļu un split laiki — Ierakstiet apļu laikus (delta) un kumulatīvos laikus (split) hronometra režīmā.
- 📊 Labākais/sliktākais aplis — Iebūvētas palīgfunkcijas ātrākā un lēnākā apļa atrašanai sesijā.
- 🎯 Augsta izšķirtspēja laika mērīšana — Apļa deltas mērītas ar
performance.now()ar sekundes daļas precizitāti.
Instalēšana
npm install new-js-clock
# vai
pnpm add new-js-clock Pieejams arī caur CDN tiešai izmantošanai pārlūkprogrammā — skatiet README unpkg un jsDelivr saitēm.
Kāpēc tas aizņēma tik ilgu laiku?
Godīgi? Dzīve. Sākotnējais JS-Clock tika uzrakstīts mana mirušā drauga Gustavo Beltrão lūgumā (tolaik īsts PHP meistars, ar kuru man bija gods strādāt vairāk nekā vienu reizi) izmantošanai uzņēmumu iekšējos informācijas paneļos un vienas lapas vietnēs pasākumiem ar apmeklētājiem no dažādām laika joslām. Tas veica savu uzdevumu pietiekami labi, lai nekad nešķistu steidzami to pārskatīt. Bet jQuery jau sen pazuda no mūsdienu projektiem, TypeScript kļuva par bibliotēku izstrādes standartu, un kļūda ar vairāku instanču atbalstu mani vienmēr traucēja. Kad beidzot apsēdos to pienācīgi salabot, bija jēgpilni to izdarīt pareizi — ar tipiem, testiem, mūsdienīgu moduļu sistēmu un pietiekami daudz funkciju, lai tas būtu patiesi noderīgs 2026. gadā. Turklāt plānoju to izmantot nākamajā komerciālajā projektā.
Labāk vēlu nekā nekad.
Vienīgi Jēzum Kristum lai gods!