Latihan 1 dari materi Performance Budget di Performance — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Lengkapi function checkBudget(assets, budget) yang mengecek apakah asset sebuah halaman masih di dalam performance budget.
assets: array berisi { name, sizeKB, type }, dengan type salah satu dari "js", "css", "image", atau "font".
budget: { maxTotalJS, maxTotalCSS, maxTotalImage, maxSingleAsset }, semuanya dalam KB.
Jumlahkan sizeKB per type: total JS, total CSS, dan total image. Font gak punya batas total.
Tiap total yang lebih dari (>) batasnya jadi satu kalimat, berurutan JS, CSS, lalu Image:
JS total <total>KB exceeds <batas>KB limit
CSS total <total>KB exceeds <batas>KB limit
Image total <total>KB exceeds <batas>KB limit
Setelah itu, tiap asset (type apa pun) yang sizeKB-nya lebih dari maxSingleAsset jadi kalimat <name> (<sizeKB>KB) exceeds <batas>KB single asset limit, sesuai urutan di array.
Kembalikan { passed, violations }: violations adalah array berisi kalimat-kalimat itu, dan passed bernilai true kalau array-nya kosong.
Satu asset chart.js 350 KB bertipe "js" menghasilkan { passed: false, violations: ["JS total 350KB exceeds 300KB limit", "chart.js (350KB) exceeds 300KB single asset limit"] }.
Tulis kalimatnya persis: KB nempel ke angka tanpa spasi, dan urutannya total dulu baru per asset. Ada cek tersembunyi untuk satu file JS yang terlalu besar. Data dan console.log di kode awal biarkan saja.
Hint
Kerjakan dalam dua tahap: jumlahkan dulu ukuran per type dan bandingkan tiap total dengan batasnya, baru cek tiap asset satu per satu terhadap maxSingleAsset.
Simpan total di object { js: 0, css: 0, image: 0 } dan tambahkan asset.sizeKB ke totals[asset.type]. Masukkan kalimat ke array violations dengan push, berurutan JS, CSS, Image, lalu per asset. Terakhir return { passed: violations.length === 0, violations }.
if (totals.js > budget.maxTotalJS) violations.push(`JS total ${totals.js}KB exceeds ${budget.maxTotalJS}KB limit`); lalu untuk tiap asset: if (asset.sizeKB > budget.maxSingleAsset) violations.push(`${asset.name} (${asset.sizeKB}KB) exceeds ${budget.maxSingleAsset}KB single asset limit`);
</>{ }.css=>#idfn()
Versi baru
HyperSheets
bagian dari BelajarWeb.dev
0%
Membuka gerbang…
HyperSheets
Memperbarui Aplikasi
Versi baru tersedia. Halaman akan dimuat ulang otomatis...