Saat mempelajari teknologi modern seperti UnoCSS, Vite, Babel, ESLint, atau berbagai alat pengembangan lainnya, Anda mungkin akan menemukan istilah Preset. Bagi banyak orang, istilah ini terdengar sederhana, tetapi konsep di baliknya sebenarnya cukup penting karena mewakili cara baru dalam membangun perangkat lunak yang fleksibel, modular, dan mudah dikustomisasi.
Mengapa Saya Bingung Saat Pertama Kali Mendengar Preset?
Kebingungan biasanya muncul karena banyak dokumentasi langsung menjelaskan cara menggunakan preset tanpa menjelaskan terlebih dahulu apa sebenarnya preset itu.
Akibatnya, seseorang hanya melihat contoh seperti:
presets: [ presetA(), presetB(), presetC() ]
Tanpa memahami bahwa preset sebenarnya bukan fitur khusus CSS, melainkan sebuah pola desain sistem yang dapat digunakan hampir di semua jenis software.
Jika dipahami dari sudut pandang yang lebih luas, preset hanyalah kumpulan konfigurasi yang sudah dipaketkan menjadi satu unit yang siap digunakan.
Definisi Sederhana Preset System
Preset System adalah metode di mana sebuah aplikasi, engine, atau framework mendapatkan perilaku dan kemampuannya melalui paket konfigurasi yang dapat dipasang, dilepas, diganti, atau digabungkan sesuai kebutuhan.
Alih-alih semua fitur ditanam langsung ke dalam inti sistem, fitur-fitur tersebut dipisahkan menjadi modul-modul yang disebut preset.
Dengan kata lain:
- Core hanya menyediakan mesin dasar.
- Preset menyediakan kemampuan tambahan.
- Pengguna memilih sendiri kemampuan yang ingin diaktifkan.
Konsep ini sering disebut sebagai pendekatan modular architecture.
Analogi Sederhana: Mobil Tanpa Aksesori
Bayangkan sebuah pabrik mobil membuat satu jenis rangka mobil standar.
Rangka tersebut belum memiliki:
- Sistem audio.
- Kamera parkir.
- GPS.
- Sunroof.
- Kursi premium.
Semua fitur tersebut tersedia dalam bentuk paket tambahan.
Saat membeli mobil, pelanggan dapat memilih:
- Paket Sport.
- Paket Luxury.
- Paket Touring.
- Paket Safety.
Dalam analogi ini:
- Rangka mobil = Core Engine.
- Paket tambahan = Preset.
- Pelanggan = Developer.
Preset pada software bekerja dengan prinsip yang hampir sama.
Mengapa Preset System Menjadi Populer?
Dulu banyak software dibuat dengan pendekatan monolitik.
Artinya semua fitur langsung dimasukkan ke dalam sistem inti.
Masalahnya:
- Aplikasi menjadi besar.
- Performa menurun.
- Sulit dikustomisasi.
- Banyak fitur tidak digunakan tetapi tetap dimuat.
Preset System muncul sebagai solusi.
Developer hanya memuat fitur yang benar-benar dibutuhkan.
Hasilnya:
- Lebih cepat.
- Lebih ringan.
- Lebih fleksibel.
- Lebih mudah dirawat.
Perbedaan Framework Tradisional dan Sistem Berbasis Preset
| Framework Tradisional | Sistem Berbasis Preset |
|---|---|
| Fitur sudah ditentukan sejak awal | Fitur dipilih sesuai kebutuhan |
| Lebih besar ukurannya | Lebih ringan |
| Kurang fleksibel | Sangat fleksibel |
| Semua pengguna mendapatkan fitur yang sama | Setiap pengguna bisa memiliki konfigurasi berbeda |
Bagaimana Cara Kerja Preset?
Secara umum prosesnya terdiri dari empat tahap:
1. Core Engine Dijalankan
Mesin utama aplikasi dijalankan terlebih dahulu.
Pada tahap ini kemampuannya masih sangat terbatas.
2. Preset Dibaca
Sistem membaca daftar preset yang dipilih pengguna.
3. Preset Menambahkan Fitur
Masing-masing preset akan menambahkan konfigurasi, aturan, atau kemampuan baru.
4. Sistem Digabungkan
Semua konfigurasi digabung menjadi satu sistem yang siap digunakan.
Proses ini sering disebut sebagai composability atau composition system.
Mengapa UnoCSS Menggunakan Preset?
UnoCSS sering menjadi contoh menarik karena ia menerapkan konsep preset secara ekstrem.
Banyak framework CSS tradisional membawa ribuan utility class secara bawaan.
Sedangkan pada UnoCSS, inti sistem hampir tidak memiliki utility class.
Sebaliknya, utility tersebut berasal dari preset yang dipasang pengguna.
Karena itulah dokumentasi menyebutnya sebagai:
- Engine.
- Atomic CSS Generator.
- On-demand CSS System.
- Unopinionated Core.
Artinya inti sistem sengaja dibuat netral dan minimalis.
Filosofinya:
"Jangan paksa semua orang menggunakan konfigurasi yang sama."
Preset Bukan Hanya Ada di Dunia CSS
Inilah bagian yang paling penting untuk dipahami.
Preset bukan konsep milik UnoCSS.
Preset adalah pola desain software yang digunakan di banyak teknologi.
Babel
Babel memiliki preset untuk mengubah kode JavaScript modern menjadi versi yang kompatibel dengan browser lama.
ESLint
ESLint memiliki preset aturan coding yang bisa langsung digunakan.
Webpack
Webpack dapat menggunakan preset konfigurasi untuk berbagai kebutuhan build process.
Vite
Vite menggunakan plugin dan preset untuk memperluas kemampuannya.
Visual Studio Code
Extension Pack sebenarnya merupakan bentuk lain dari preset karena berisi kumpulan konfigurasi dan fitur yang dipasang sekaligus.
Hubungan Preset, Plugin, dan Configuration
Ketiga istilah ini sering tertukar.
Configuration
Pengaturan manual yang dibuat sendiri oleh pengguna.
Plugin
Modul tambahan yang menambahkan fitur tertentu.
Preset
Kumpulan konfigurasi dan plugin yang sudah dikemas menjadi satu paket siap pakai.
Secara sederhana:
Configuration = Pengaturan Individual Plugin = Fitur Tambahan Preset = Paket Siap Pakai
Filosofi Besar di Balik Preset System
Jika dilihat lebih dalam, preset sebenarnya lahir dari filosofi pemrograman modern:
- Composition over Monolith.
- Flexibility over Convention.
- Minimal Core, Maximum Extensibility.
- Pay Only for What You Use.
Software modern tidak lagi berusaha menjadi "semua hal untuk semua orang".
Sebaliknya, software menyediakan fondasi dasar, lalu pengguna merakit sendiri kemampuan yang dibutuhkan.
Mirip seperti menyusun balok LEGO daripada membeli patung yang sudah jadi.
Cara Mengingat Konsep Preset dengan Mudah
Jika suatu hari Anda lupa apa itu preset, cukup ingat satu kalimat berikut:
Preset adalah paket konfigurasi siap pakai yang menambahkan kemampuan tertentu ke sebuah sistem inti yang sengaja dibuat minimal.
Atau lebih singkat lagi:
Core adalah mesin, preset adalah paket kemampuannya.
Kesimpulan
Preset System bukanlah teknologi khusus milik UnoCSS maupun dunia CSS. Preset adalah pola arsitektur perangkat lunak modern yang memungkinkan sebuah sistem inti tetap kecil, cepat, dan fleksibel dengan cara memindahkan sebagian besar fitur ke modul konfigurasi yang dapat dipasang sesuai kebutuhan.
Saat Anda melihat istilah preset pada teknologi apa pun di masa depan, pikirkan bahwa Anda sedang melihat "paket kemampuan" yang diberikan kepada sebuah mesin dasar. Semakin banyak preset yang dipasang, semakin banyak kemampuan yang dimiliki sistem tersebut. Semakin sedikit preset yang digunakan, semakin ringan dan fokus sistem tersebut.
Dengan memahami konsep ini, Anda tidak hanya memahami UnoCSS, tetapi juga memahami salah satu pola desain yang sangat sering digunakan dalam pengembangan software modern.
Diskusi & Komentar