Patterns.dev
(patterns.dev)- Materi online gratis yang membahas pola perancangan aplikasi web dan optimasi performa, menyediakan konten pembelajaran yang berfokus pada JavaScript dan framework modern
- Merangkum secara sistematis pola desain, rendering, loading, dan teknik peningkatan performa yang dikhususkan untuk Vanilla JavaScript, React, Vue
- Mendukung lingkungan praktik CodeSandbox dengan contoh-contoh berorientasi praktik seperti penggunaan ulang kode, manajemen state, strategi rendering, optimasi bundle
- Pola desain bukan aturan, melainkan alat referensi, disajikan sebagai cara untuk membantu menyelesaikan masalah yang berulang dan memahami kesamaan dalam kode
- Mencakup sintaks ES2017+ terbaru dan implementasi berbasis React Hooks, dengan fokus pada skalabilitas struktural dan peningkatan performa aplikasi web skala besar
Gambaran Umum
- Patterns.dev adalah sumber daya online gratis untuk meningkatkan arsitektur aplikasi web, dengan fokus pada pola desain, rendering, dan performa
- Menjelaskan tujuan dan cara penggunaan tiap pola beserta contoh implementasi di lingkungan Vanilla JavaScript, React, Vue.js
- Menyediakan unduhan eBook atau PDF serta fitur baca online
Pola JavaScript
- Menyediakan kumpulan pola yang berfokus pada JavaScript dasar dan Node.js
- Mencakup pola desain tradisional seperti Singleton, Proxy, Prototype, Observer, Module, Mixin, Mediator, Flyweight, Factory, dan lainnya
- Memuat banyak pola optimasi performa dan loading
- Dynamic Import, Route-based Splitting, Tree Shaking, Prefetch, Preload, PRPL, optimasi third-party, dan lainnya
- Memanfaatkan fitur browser terbaru seperti animasi perpindahan halaman dengan View Transitions API, virtualisasi daftar, kompresi kode, dan lainnya
Pola React
- Menyediakan pola struktural dan strategi rendering berbasis React dan Next.js
- Mencakup pola komposisi seperti Container/Presentational, HOC, Render Props, Hooks, Compound, dan lainnya
- Perbandingan metode rendering
- Client-side, Server-side, Static, Incremental Static Generation, Progressive Hydration, Streaming SSR, dan lainnya
- Menyediakan panduan terkait React Server Components dan optimasi Next.js Core Web Vitals
- Dokumen React Stack Patterns (2025/2026) membahas stack teknologi terbaru seperti framework, build tool, routing, manajemen state, integrasi AI, dan lainnya
Pola Vue
- Pola khusus Vue.js yang berfokus pada struktur komponen dan manajemen state
- Components, Async Components, Composables, Container/Presentational, Data Provider, Dynamic Components, dan lainnya
- Menyajikan struktur kode modern dengan memanfaatkan sintaks Composition API dan <script setup>
- Mencakup pola tingkat lanjut seperti Provide/Inject, Renderless Components, Render Functions, dan lainnya
Filosofi Penerapan Pola
- Patterns.dev memposisikan pola sebagai alat referensi, bukan aturan baku
- Menyediakan solusi umum untuk menyelesaikan masalah yang berulang, tetapi tidak memaksakan penerapannya di semua situasi
- Tujuan pola desain adalah menyampaikan kesamaan dalam masalah kode agar lebih mudah dipahami manusia
- Menekankan pentingnya pola yang spesifik pada bahasa atau framework, serta menghadirkan pendekatan modern yang melampaui pola GoF tradisional
Dukungan Belajar dan Praktik
- Melalui contoh praktik CodeSandbox, implementasi nyata tiap pola dapat dilihat secara langsung
- Menyediakan metode belajar yang membantu pemahaman konsep lewat materi animasi visual
- Menunjukkan cara meningkatkan efisiensi loading kode dan pengalaman pengguna melalui pola performa web
Ringkasan Fitur Utama
- Implementasi berbasis sintaks ES2017+ yang dioptimalkan untuk lingkungan JavaScript modern
- Berfokus pada optimasi untuk developer React dan peningkatan performa web
- Menekankan kepraktisan dibanding kompleksitas melalui interpretasi modern atas pola desain
- Menyediakan panduan praktis untuk skalabilitas dan peningkatan performa aplikasi web skala besar
1 komentar
Komentar Hacker News
Saat dulu mengembangkan aplikasi enterprise .NET di tempat kerja lama, design pattern benar-benar berguna
Karena banyak tim memakai pattern yang sama, kode terasa familier dan proyek baru juga punya struktur yang konsisten
Tapi sekarang saya menangani aplikasi JS berusia lebih dari 10 tahun, dan justru terasa merugikan karena penyalahgunaan getter/setter ala Java EE dan struktur factory yang rumit
Jika pattern dipakai berlebihan tanpa memahami alasannya, hasilnya bisa jauh lebih buruk daripada kode yang sederhana dan mudah dibaca (teringat prinsip YAGNI)
Sebagai developer, pada akhirnya kita akan secara alami memikirkan struktur seperti Adapter, Builder, Iterator
Nilai sebenarnya dari design pattern adalah memberi bahasa bersama pada pattern yang ditemukan ini agar kita bisa berkomunikasi dengan lebih mudah
Dalam bahasa yang sederhana seperti C, Go, atau JavaScript, masalah yang sama bisa diselesaikan dengan jauh lebih simpel
Itu tidak selaras dengan filosofi bahasanya
Awalnya terlihat rapi, tapi lama-lama logika tersebar ke mana-mana, dan saat ada kebutuhan baru pattern itu mudah rusak
Pada akhirnya saya malah merindukan
switchyang sederhanaRasanya seperti perbedaan sudut pandang antara orang yang hanya membangun aplikasi kecil dan orang yang membangun gedung pencakar langit
Dulu ada Yahoo Design Pattern Library
Fokusnya pada pattern UX, dan merangkum dengan baik berbagai contoh untuk mendorong perilaku pengguna, misalnya pemberian rating
Tautan asli / Web Archive
Ini adalah repositori yang mengumpulkan komponen UI dari lebih dari 90 design system, dan juga bagus untuk mempelajari panduan a11y/ARIA
component.gallery
Bahasa bersama meningkatkan produktivitas
Ini kumpulan materi yang bagus, jadi saya menambahkannya ke bookmark
Saya juga membagikan beberapa situs serupa
Katanya Ward Cunningham membuat wiki untuk tujuan ini c2.com/ppr
Semakin panjang pengalaman kerja, semakin kecil ketergantungan pada design pattern
Junior sering berpikir mempelajari pattern adalah jalan pintas karier, tetapi justru sering menambah kompleksitas
Yang benar-benar penting adalah memahami inti masalah dan struktur data
Misalnya, saat mencari item yang sama di dua array, pattern sederhana seperti memakai HashMap untuk menurunkan kompleksitas menjadi O(n) jauh lebih berguna
Hal seperti ini bahkan tidak punya nama, tapi merupakan pattern inti yang dipakai setiap hari di dunia kerja
Pada akhirnya yang penting adalah prinsip dan konteks, bukan bentuk ala buku teks
Kalau seseorang bilang “saya membuat singleton”, kita langsung paham
Tapi mempercayai alat secara membabi buta tetaplah masalah
Itu juga bisa dilihat di query planner Postgres
Hanya saja saat memberi nama pada kode, sebaiknya gunakan nama yang deskriptif
Bagus untuk dipelajari saat latihan Leetcode
Ada buku yang membahas bukan hanya pattern teknis tetapi juga pattern organisasi, yaitu
Organisational Patterns (James Coplien, Neil Harrison)
Tautan ringkasan
Saat kuliah, saya kebetulan pernah mengambil kelas pattern yang diajar langsung oleh Ralph Johnson,
dan itu termasuk salah satu kelas paling berguna dalam hidup saya
Wiki Ralph Johnson
Ada ungkapan, “Design Patterns are a sign of missing language features”
Artinya, kalau suatu bahasa cukup ekspresif, mungkin pattern itu tidak akan dibutuhkan
Materi terkait: C2 Wiki, makalah Norvig, artikel Medium
Situs ini adalah kumpulan tutorial yang rapi, tetapi sayangnya tidak menunjukkan struktur hubungan hierarkis antarpattern seperti 『A Pattern Language』 karya Christopher Alexander
Pattern pada dasarnya mendapat makna dari relasi atas–bawah seperti itu, tetapi konteks tersebut sering hilang dalam buku teknis
Akan lebih baik kalau juga dijelaskan dengan lebih jelas masalah apa yang diselesaikan oleh tiap pattern
Misalnya, “Short Passages” terhubung dengan “Flow Through Rooms”, “Building Thoroughfare”, dan lainnya
Struktur seperti inilah kekuatan sebenarnya dari pattern language
Jika pattern disalahgunakan, hasilnya menjadi kode yang lambat dan sulit dirawat
Kalau mencoba menyelesaikan masalah yang bahkan belum ada sejak awal, kompleksitas hanya akan bertambah
Dari sudut pandang POSD (Principles of Software Design), pattern yang berguna antara lain
Sebaliknya, Singleton, Mixin, Observer, dan sejenisnya perlu diwaspadai karena bisa memicu peningkatan kompleksitas atau ketergantungan pada state global
Situs ini lebih menonjolkan keluasan daripada kedalaman, jadi terasa seperti tahun 2017
Yang benar-benar penting adalah menguasai dasar-dasar menangani immutable data
Latihan menulis kode hanya dengan method array tanpa
forsangat membantuDi JS,
Object.freezepunya keterbatasan, dan pendekatan yang mengembalikan objek baru seperti ramdajs lebih realistisBerkat sintaks modern JS, kini hanya sebagian fungsi ramdajs yang masih terasa berguna