Dari halaman web statis menuju blok bangun aplikasi mobile: memahami empat bahan dasar yang membentuk hampir semua aplikasi digital yang Anda pakai sehari-hari.
RPS MINGGU 3 • 2×50 MENIT
Tujuan Pembelajaran Hari Ini
Setelah pertemuan ini, Anda diharapkan mampu menjelaskan peran HTML, CSS, JavaScript, dan React Native serta menyusun komponen aplikasi sederhana.
PEMAHAMAN KONSEP
4
bahan dasar aplikasi
HTML sebagai kerangka, CSS sebagai tampilan, JavaScript sebagai interaktivitas, React Native sebagai jembatan ke aplikasi mobile.
KEMAMPUAN PRAKTIS
1
komponen aplikasi sederhana
Membaca dan menyusun struktur komponen (tampilan + gaya + perilaku) untuk sebuah tombol atau kartu produk sederhana.
Mengapa Anda Perlu Paham Empat Bahan Dasar Ini?
Sebagai calon manajer produk digital, Anda akan berbicara dengan developer setiap hari — memahami bahan dasarnya membuat Anda partner diskusi yang setara.
Bayangkan Anda product owner sebuah aplikasi UMKM. Developer bilang, "fitur keranjang belanja sudah selesai UI-nya, tapi logic tambah-kurang jumlah barang belum jalan." Kalau Anda tahu bahwa "tampilan" itu ranah HTML/CSS sedangkan "logic" atau perilaku itu ranah JavaScript, Anda langsung paham apa yang masih kurang — tanpa perlu developer menjelaskan ulang dari nol.
Kasus nyata: aplikasi seperti Tokopedia dan Gojek versi mobile dibangun dengan pendekatan komponen serupa React Native — satu tim menulis satu basis kode yang berjalan di HP Android maupun iPhone, menghemat waktu dan biaya pengembangan secara signifikan.
Bagian 1 dari 3
Fondasi Web: HTML, CSS & JavaScript
Tiga bahasa dasar yang membangun hampir setiap halaman web di internet — kerangka, tampilan, dan perilaku.
Tahap 1: HTML — Kerangka & Struktur Halaman
HTML (HyperText Markup Language) adalah bahasa yang menyusun apa saja yang ada di sebuah halaman — judul, paragraf, gambar, tombol — tanpa mengatur tampilannya.
<tag>isi konten</tag>
<h1> / <p>
Judul dan paragraf teks
Contoh: nama produk, deskripsi
<img> / <button>
Gambar produk
Tombol "Tambah Keranjang"
<div>
Kotak pembungkus/kontainer
Mengelompokkan elemen terkait
Tahap 2: CSS — Mendandani Tampilan
CSS (Cascading Style Sheets) mengatur bagaimana rupa elemen HTML — warna, ukuran, jarak, dan tata letak.
Glosarium: box model — cara browser menghitung ukuran setiap elemen: content + padding + border, dikelilingi margin di luar.
Hitung dari Nol: Total Lebar Sebuah Kotak Produk
Studi kasus: sebuah kartu produk punya width: 200px, padding: 20px tiap sisi, border: 5px tiap sisi, dan margin: 10px tiap sisi.
Langkah
Perhitungan
Nilai
1. Lebar konten (width yang ditulis)
langsung dari kode
200px
2. Tambahan padding kiri + kanan
20px × 2 sisi
40px
3. Tambahan border kiri + kanan
5px × 2 sisi
10px
4. Total lebar kotak yang tampak
200 + 40 + 10
250px
5. Total ruang termasuk margin (jarak ke kotak sebelah)
250 + (10px × 2 sisi)
270px
RUANG YANG SEBENARNYA DIPAKAI
270px
bukan 200px seperti yang tertulis di "width" — jebakan paling umum pemula
Coba Sendiri: Hitung Total Lebar Kotak Anda
Ubah nilai width, padding, border, dan margin, lalu amati bagaimana ruang total yang dipakai kotak berubah.
Tahap 3: JavaScript — Membuat Halaman "Hidup"
JavaScript menambahkan perilaku — merespons klik, mengubah isi halaman tanpa reload, memvalidasi input pengguna.
Tanpa JavaScript
Tombol "Tambah Keranjang" tidak merespons
Halaman statis, seperti brosur digital
Setiap aksi butuh muat ulang halaman
Dengan JavaScript
Klik tombol langsung menambah jumlah item
Notifikasi "berhasil ditambahkan" muncul instan
Form login memberi peringatan sebelum submit
Glosarium: DOM (Document Object Model) — representasi halaman HTML di dalam memori browser yang bisa "diutak-atik" JavaScript secara langsung, misalnya mengubah teks atau warna tanpa memuat ulang halaman.
Alur Sebuah Klik Tombol: Bagaimana JavaScript Bekerja
Studi kasus: pengguna menekan tombol "+" untuk menambah jumlah barang di keranjang belanja.
Langkah
Yang terjadi
Analogi
1. Pengguna menekan tombol "+"
Browser mendeteksi event "click"
Menekan bel pintu
2. JavaScript "mendengar" event tersebut
Fungsi event listener aktif
Orang di dalam rumah mendengar bel
3. JavaScript menjalankan fungsi terkait
Nilai jumlah barang ditambah 1
Orang itu berjalan membuka pintu
4. DOM diperbarui, layar berubah
Angka jumlah tampil baru, tanpa reload
Pintu terbuka, tamu langsung terlihat
Bagian 2 dari 3
Dari Web ke Aplikasi Mobile: React Native
Bagaimana pengetahuan HTML, CSS, dan JavaScript dipakai kembali untuk membangun aplikasi yang berjalan di HP.
Tahap 4: React Native — Satu Kode, Dua Platform
React Native adalah kerangka kerja (framework) untuk menulis aplikasi mobile memakai JavaScript, yang bisa berjalan di Android dan iOS sekaligus.
Bandingkan: cara lama (native) mengharuskan tim menulis kode Kotlin untuk Android dan kode Swift untuk iOS secara terpisah — dua tim, dua basis kode, dua kali biaya perawatan.
Tahap 5: Komponen, JSX & Props — Blok Bangun Aplikasi
Aplikasi React Native disusun dari komponen — potongan kode yang bisa dipakai berulang, ditulis dengan sintaks mirip HTML bernama JSX.
Komponen & JSX
Komponen = "cetakan kue" yang bisa dipakai berkali-kali
JSX = campuran JavaScript + tampilan mirip HTML
Contoh: komponen <TombolBeli /> dipakai di banyak halaman
Props (Properties)
"Isian" yang dikirim ke sebuah komponen
Mis. warna, teks tombol, harga produk berbeda-beda
Satu komponen, tampilan bisa bervariasi lewat props
Glosarium: props — singkatan dari properties, yaitu data yang "dititipkan" ke sebuah komponen supaya tampilannya bisa disesuaikan tanpa menulis ulang kodenya.
Dari HTML ke JSX: Perbandingan Bertahap
Studi kasus: mengubah sebuah tombol sederhana dari HTML web menjadi komponen React Native.
Langkah
HTML (Web)
JSX (React Native)
1. Elemen dasar tombol
<button>Beli</button>
<Pressable><Text>Beli</Text></Pressable>
2. Menambahkan gaya/warna
class="tombol-merah" (CSS terpisah)
style={styles.tombolMerah} (StyleSheet)
3. Menangani klik
onclick="tambahKeranjang()"
onPress={tambahKeranjang}
4. Hasil akhir
Berjalan di browser (web)
Berjalan sebagai aplikasi native di HP
Tahap 6: Styling di React Native — StyleSheet vs CSS
React Native memakai StyleSheet, objek JavaScript yang meniru cara berpikir CSS — tanpa file .css terpisah.
CSS (Web)
File terpisah (.css) atau di dalam <style>
Properti: color, padding, margin
Satuan: px, %, rem, em
StyleSheet (React Native)
Objek JavaScript di dalam file komponen
Properti serupa: color, padding, margin
Satuan: angka polos (tanpa "px"), otomatis pas layar HP
Kabar baik: karena konsepnya nyaris identik dengan CSS, mahasiswa yang sudah paham box model tadi (padding, border, margin) tinggal menyesuaikan sedikit cara penulisannya di React Native.
Hitung dari Nol: Efisiensi Waktu React Native vs Native Terpisah
Studi kasus: tim mengembangkan fitur "Login" untuk aplikasi. Bandingkan total waktu jika ditulis native terpisah vs React Native.
Langkah
Perhitungan
Nilai
1. Waktu tulis fitur Login native Android (Kotlin)
estimasi tim
20 jam
2. Waktu tulis fitur Login native iOS (Swift)
estimasi tim, terpisah dari Android
20 jam
3. Total waktu jika native (2 basis kode)
20 + 20
40 jam
4. Waktu tulis fitur Login di React Native (1 basis kode)
estimasi tim, untuk 2 platform sekaligus
25 jam
5. Persentase waktu yang dihemat
(40−25) ÷ 40 × 100%
37,5%
EFISIENSI WAKTU DENGAN REACT NATIVE
37,5%
hemat 15 jam dari 40 jam, untuk satu fitur saja — ilustrasi, bukan angka baku industri
Coba Sendiri: Bandingkan Waktu Native vs React Native
Ubah estimasi jam kerja tiap pendekatan, lalu amati persentase waktu yang dihemat.
Bagian 3 dari 3
Merangkai Komponen Jadi Aplikasi
Menyatukan HTML, CSS, JavaScript, dan React Native dalam satu gambaran besar, lalu berlatih langsung.
Peta Alur Lengkap: Dari HTML ke Aplikasi Mobile
Sub-CPMK minggu ini: Anda mampu menjelaskan peran HTML, CSS, JavaScript, dan React Native, serta mengenali struktur, gaya, dan perilaku dalam sebuah komponen aplikasi.
Latihan Kelas: Diagnosis Komponen Sederhana
Kerjakan berpasangan (5 menit), lalu kita bahas bersama.
Kasus: Sebuah komponen "KartuProduk" di aplikasi mobile UMKM batik menampilkan foto, nama produk, dan tombol "Beli". Foto dan nama sudah tampil rapi, tapi tombol "Beli" tidak merespons saat ditekan.
Pertanyaan Diskusi
Bagian mana (struktur/gaya/perilaku) yang kemungkinan bermasalah?
Bahasa/konsep apa yang perlu dicek developer?
Apakah ini soal HTML/JSX, CSS/StyleSheet, atau JavaScript?
Yang Perlu Anda Cek
Apakah komponen Pressable/onPress sudah terpasang?