kodingup.camp

Beranda/Bekal Wajib: Cara Kerja Web, Tools, Git & Cara Belajar

Standar Web & Browser

Modul 2 dari 95 menit bacaWeb Standards

Isi modul

    Kenapa ini penting

    Bayangkan kalau setiap merek colokan listrik punya bentuk sendiri: charger HP kamu hanya cocok di rumah sendiri. Web pernah mengalami masa seperti itu di akhir 1990-an, ketika browser berlomba membuat fitur sendiri dan developer harus menulis kode berbeda untuk tiap browser. Sekarang ada standar web: aturan bersama yang diikuti semua pembuat browser, sehingga kode yang kamu tulis sekali bisa jalan di Chrome, Firefox, Safari, dan Edge. Sebagai developer, kamu perlu tahu siapa pembuat aturannya, di mana membaca rujukan yang benar, cara mengecek apakah sebuah fitur sudah aman dipakai, dan cara memakai DevTools untuk memeriksa halaman.

    Konsep inti

    Siapa yang membuat standar

    Organisasi Mengurus Contoh
    WHATWG (Web Hypertext Application Technology Working Group) HTML Living Standard, DOM, Fetch, URL Elemen <dialog>, fetch()
    W3C (World Wide Web Consortium) CSS, aksesibilitas (WCAG), banyak Web API Spesifikasi CSS Grid, WCAG 2.2
    TC39 (komite di Ecma International) Bahasa JavaScript (ECMAScript) async/await, optional chaining ?.
    Khronos Group Grafis 3D WebGL

    Prinsip dasar standar web: terbuka untuk dipakai dan dikontribusi siapa saja, tidak dikunci paten atau satu perusahaan, mudah diakses dan bisa dipakai lintas browser (interoperable), serta tidak merusak web (don't break the web). Prinsip terakhir menjelaskan kenapa fitur lama jarang benar-benar dihapus: jutaan situs lama masih memakainya.

    Siklus hidup fitur

    1. Experimental: masih dicoba, mungkin hanya ada di satu browser atau di balik pengaturan khusus. Jangan dipakai di produksi.
    2. Stable (stabil): sudah didukung dan spesifikasinya mapan.
    3. Deprecated (usang): masih jalan, tetapi tidak disarankan dan bisa dihapus suatu saat. Contoh: elemen <marquee> dan <center>.

    Di halaman MDN kamu akan melihat label kecil seperti "Experimental" atau "Deprecated" di dekat judul atau di daftar properti.

    MDN, Can I use, dan Baseline

    Aturan praktis untuk pemula: kalau label MDN menunjukkan "Widely available", pakai saja. Kalau "Newly available", pertimbangkan siapa pengunjungmu. Kalau "Limited", siapkan cadangan (fallback) atau tunda dulu.

    Tur singkat DevTools

    Semua browser modern punya DevTools (alat developer). Buka dengan F12, atau Ctrl+Shift+I (Windows/Linux), Cmd+Option+I (macOS), atau klik kanan elemen lalu pilih Inspect. Tab-tab penting:

    Tab Gunanya
    Elements (Firefox: Inspector) Melihat dan mengedit HTML/CSS secara langsung, menguji warna atau margin tanpa mengubah file
    Console Membaca pesan error JavaScript dan menjalankan kode JS kecil
    Network Melihat semua request: status code, ukuran file, waktu muat
    Sources (Firefox: Debugger) Membaca file JS dan memasang breakpoint
    Application (Firefox: Storage) Melihat cookie, localStorage, cache
    Lighthouse (Chrome) Audit performa, aksesibilitas, SEO

    Ada juga Device Toolbar (ikon HP/tablet, Ctrl+Shift+M / Cmd+Shift+M) untuk melihat tampilan seukuran layar HP. Perubahan di DevTools hanya sementara; kalau halaman di-refresh, kembali ke kode aslinya.

    Contoh kode

    Buka halaman apa saja, tekan F12, pilih tab Console, lalu ketik baris di bawah satu per satu. Ini cara cepat bereksperimen tanpa membuat file.

    // Ambil judul tab halaman yang sedang dibuka
    document.title
    // → "MDN Web Docs" (tergantung halaman yang kamu buka)
    
    // Cek apakah browser mendukung fitur tertentu (feature detection)
    "fetch" in window
    // → true
    
    CSS.supports("display", "grid")
    // → true  (CSS Grid sudah Baseline Widely available)
    
    CSS.supports("display", "kotak-ajaib")
    // → false (properti/nilai ngasal tidak didukung)
    
    // Ubah warna latar halaman sementara (hilang saat refresh)
    document.body.style.background = "lightyellow";
    // → "lightyellow"
    

    Contoh feature detection di file HTML, supaya halaman tetap aman di browser yang belum mendukung sebuah fitur:

    <!DOCTYPE html>
    <html lang="id">
    <head>
      <meta charset="UTF-8">
      <title>Feature detection</title>
      <style>
        /* Default untuk semua browser: kotak ditumpuk */
        .galeri div { margin: 8px; padding: 16px; background: #dbeafe; }
        /* Hanya dipakai kalau browser mendukung grid */
        @supports (display: grid) {
          .galeri { display: grid; grid-template-columns: repeat(3, 1fr); }
        }
      </style>
    </head>
    <body>
      <div class="galeri"><div>1</div><div>2</div><div>3</div></div>
      <p id="info"></p>
      <script>
        // Tampilkan info dukungan ke halaman
        const ok = CSS.supports("display", "grid");
        document.getElementById("info").textContent =
          ok ? "Browser ini mendukung CSS Grid" : "Grid tidak didukung, memakai tampilan cadangan";
        // → "Browser ini mendukung CSS Grid"
      </script>
    </body>
    </html>
    

    Kesalahan umum

    Latihan

    1. Mudah, Buka MDN, cari halaman elemen <dialog> dan properti CSS gap. Catat status Baseline masing-masing.
    2. Sedang, Buka sebuah situs berita, buka tab Network, refresh halaman. Berapa jumlah request yang terjadi? Cari satu file gambar dan catat ukuran serta status code-nya.
    3. Menantang, Buat file HTML berisi tiga kotak yang memakai display: flex sebagai default, lalu @supports (display: grid) untuk mengubahnya menjadi grid 3 kolom. Tambahkan script yang menulis ke halaman apakah grid didukung.
    Lihat solusi
    1. Di bagian atas halaman MDN ada kotak Baseline. Saat materi ini ditulis, keduanya sudah berstatus "Widely available". Kalau labelnya berbeda saat kamu membuka, percayai MDN, karena status bisa diperbarui.

    2. Jumlah request bervariasi (sering puluhan sampai ratusan). Di kolom Status kamu akan melihat 200 untuk yang berhasil, kadang 304 (Not Modified, artinya browser memakai salinan cache). Kolom Size menunjukkan ukuran.

    3. Contoh solusi:

    <!DOCTYPE html>
    <html lang="id">
    <head>
      <meta charset="UTF-8">
      <title>Latihan supports</title>
      <style>
        .wadah { display: flex; gap: 8px; }
        .wadah div { padding: 20px; background: #fde68a; }
        @supports (display: grid) {
          .wadah { display: grid; grid-template-columns: repeat(3, 1fr); }
        }
      </style>
    </head>
    <body>
      <div class="wadah"><div>A</div><div>B</div><div>C</div></div>
      <p id="status"></p>
      <script>
        document.getElementById("status").textContent =
          CSS.supports("display", "grid") ? "Grid didukung" : "Grid tidak didukung";
        // → "Grid didukung"
      </script>
    </body>
    </html>
    

    Ringkasan

    Kuis pemahaman

    Pilih satu jawaban per soal. Penjelasan muncul setelah kamu menjawab.