IS
Barcha yozuvlar
#performance#canvas#react

Minglab katakda Canvas DOM'dan ustun

Life Calendar setkasini ~4680 ta <div> sifatida chizish har bir resize'da mobil layoutni bir soniya davomida qaltiratdi. Bitta <canvas>'ga o'tish buni umuman layout xarajatisiz bitta chizish o'tishiga tushirdi.

const ctx = canvas.getContext('2d')!;
for (let i = 0; i < weeks; i++) {
  const x = (i % perRow) * cell;
  const y = Math.floor(i / perRow) * cell;
  ctx.fillStyle = i < lived ? accent : line;
  ctx.fillRect(x, y, cell - gap, cell - gap);
}

Endi ishonadigan qoidam: bir necha yuz oddiy, interaktiv bo'lmagan shakldan keyin DOM-tugunlariga qo'l urishni bas qil. Bitta canvas, bitta sikl — va u o'n minglab katakkacha bemalol masshtablanadi.