Pake Deno Bikin Ngoding Jadi Gini
Buat kamu yang sering ngoding, pasti udah nggak asing dong sama yang namanya runtime environment buat JavaScript di luar browser. Nah, selama ini mungkin kita kenalnya cuma satu nama besar, kan? Tapi dunia teknologi itu cepet banget berubahnya, guys. Sekarang ada nih pendatang baru yang cukup bikin gebrakan dan klaim bakal bikin pengalaman ngoding kamu jadi beda banget. Namanya Deno.
Deno ini diciptakan sama orang yang sama yang bikin "yang lama" itu lho, Ryan Dahl. Jadi, dia kayak punya second chance buat memperbaiki hal-hal yang mungkin dulu dirasa kurang pas. Nah, pake Deno ini emang beneran bikin ngoding jadi "gini"? Maksudnya gimana sih? Jadi gini lho...
Deno: Si Paket Komplit yang Bikin Hidup Lebih Simpel
Bayangin deh, selama ini kalau mau bikin proyek JavaScript backend atau command-line interface (CLI), kita harus setup macem-macem. Mulai dari package manager, formatter, linter, test runner, bundler. Belum lagi urusan sama yang namanya node_modules
yang kadang bikin folder proyek kita jadi gede banget kayak semesta. Nah, Deno datang dengan filosofi "paket komplit". Banyak tooling esensial yang udah built-in di dalamnya.
Fitur-Fitur Andalan Deno yang Bikin Ngoding Jadi Gini:
- Security is King: Ini salah satu perbedaan paling mencolok. Deno itu secure by default. Artinya, script Deno nggak punya akses sembarangan ke file system kamu, jaringan, atau environment variables tanpa izin eksplisit dari kamu. Waktu kamu run script Deno yang butuh akses ke jaringan, misalnya, dia bakal nanya dulu atau kamu harus kasih flag
--allow-net
. Ini penting banget buat keamanan, apalagi kalau kamu running script dari sumber yang nggak sepenuhnya kamu percaya. Ngoding jadi lebih tenang karena nggak deg-degan scriptnya macem-macem. - TypeScript Native: Kalau kamu suka (atau mau mulai belajar) TypeScript, kamu bakal seneng banget. Deno punya support bawaan buat TypeScript. Kamu nggak perlu compile TS ke JS secara terpisah. Langsung aja tulis kode TS, Deno yang urus sisanya. Ini bikin developer experience (DX) buat pengguna TS jadi jauh lebih mulus. Autocomplete, type checking, langsung jalan tanpa ribet setup tooling tambahan.
- ES Modules Everywhere: Lupakan
require()
. Deno sepenuhnya mendukung standard ES Modules (menggunakanimport
). Ini standar yang sama kayak di browser, jadi transisi dari frontend ke backend (atau sebaliknya) pakai Deno bakal terasa lebih natural. Dan yang paling bikin lega: nggak ada laginodemodules! Deno mengambil dependensi langsung dari URL (bisa dari web, GitHub, CDN, dll.) dan menyimpannya di cache global di komputer kamu. Startup time proyek kamu bakal kerasa jauh lebih cepet karena nggak perlu nge-scan folder nodemodules
yang isinya jutaan file. - Built-in Toolchain: Nah, ini nih yang bikin ngoding jadi sat-set. Deno udah punya tooling bawaan kayak:
deno fmt
: Buat formatting* kode biar rapi. * deno lint
: Buat ngecek potensi kesalahan atau gaya kode yang nggak konsisten. deno test
: Buat menjalankan unit test* kamu. deno bundle
: Buat nge-bundle* kode kamu jadi satu file JavaScript. deno compile
: Buat bikin executable* tunggal dari script Deno kamu. Keren buat bikin CLI tool sendiri! * deno doc
: Buat nge-generate dokumentasi dari kode kamu. deno upgrade
: Buat update* Deno ke versi terbaru.
Semua udah ada! Kamu nggak perlu install package eksternal buat hal-hal fundamental ini. Bikin setup proyek baru jadi super cepat.
- Web Standard APIs: Banyak API di Deno yang sengaja dibikin mirip atau bahkan sama persis kayak API standar di web browser, misalnya
fetch
buat request HTTP,WebSocket
,FileReader
, dll. Ini artinya, kalau kamu udah terbiasa ngoding di browser, kamu nggak perlu banyak adaptasi buat ngoding di Deno. Ilmu frontend kamu bisa langsung kepake buat bikin backend atau CLI. - Top-Level Await: Nulis kode asynchronous jadi lebih ringkas dan mudah dibaca karena kamu bisa pakai
await
di top level script kamu tanpa perlu membungkusnya dalam fungsiasync
.
Gimana Caranya Mulai Pake Deno? (Tips Praktis!)
Oke, udah kenalan nih sama fitur-fiturnya. Sekarang gimana cara mulai nyobain Deno biar ngoding kita beneran jadi "gini"?
- Instalasi yang Gampang Banget:
* Di macOS atau Linux pakai Shell: curl -fsSL https://deno.land/x/install/install.sh | sh
* Di Windows pakai PowerShell: iwr https://deno.land/x/install/install.ps1 -useb | iex
* Atau bisa juga pakai package managers kayak Homebrew, Chocolatey, atau Scoop. Cek dokumentasi resminya di deno.land buat cara paling update.
Prosesnya cepet banget, nggak pakai drama.
- "Hello, World!" Ala Deno (plus Tips Keamanan Pertama):
Buat file namanya main.ts
(atau main.js
) isinya gini:
typescript
console.log("Halo dari Deno!");
Jalankan pake command: deno run main.ts
Langsung jalan! Gampang kan?
Sekarang coba script yang butuh akses jaringan. Buat file fetch_example.ts
:
typescript
const response = await fetch("https://deno.land/");
const text = await response.text();
console.log(text.substring(0, 100) + "..."); // Ambil 100 karakter pertama
Kalau kamu jalankan pake deno run fetch_example.ts
, Deno bakal nanya: ⚠️ The script main.ts is trying to access the network. Allow? [y/n (y to allow all)]
Ini fitur keamanannya! Kalau kamu yakin scriptnya aman dan butuh akses network, ketik y
atau a
. Tips: Kalau kamu udah yakin, kamu bisa kasih izin langsung di command: deno run --allow-net fetch_example.ts
. Ada juga --allow-read
, --allow-write
, --allow-env
, --allow-run
buat ngasih izin ke file system, environment variables, dan eksekusi sub-proses. Gunakan izin seperlunya (least privilege principle)!
- Mengelola Dependensi (Bye
node_modules
!):
Cara Deno ngurus dependensi itu beda total. Kamu import langsung dari URL. Contoh:
typescript
// file: server.ts
import { serve } from "https://deno.land/[email protected]/http/server.ts"; // Import dari Deno Standard Libraryconst handler = (request: Request): Response => {
const body = Request URL: ${request.url};
return new Response(body, { status: 200 });
};
Waktu pertama kali kamu jalankan deno run --allow-net server.ts
, Deno bakal download modul server.ts
dari URL yang kamu specify dan menyimpannya di cache global di komputer kamu. Untuk selanjutnya, Deno bakal langsung pakai yang di cache itu.
Tips: Biar kode kamu nggak penuh sama URL import yang panjang, konvensi di Deno adalah membuat file deps.ts
(atau nama lain) khusus buat nge-export ulang dependensi yang sering dipakai.
typescript
// file: deps.ts
export { serve } from "https://deno.land/[email protected]/http/server.ts";
export { config } from "https://deno.land/x/[email protected]/mod.ts"; // Contoh pakai modul eksternal
// ... dependensi lain
Terus di file lain, kamu bisa import dari deps.ts
:
typescript
// file: main.ts
import { serve } from "./deps.ts";
// ... pakai serve
Ini bikin kode utama kamu lebih rapi dan gampang di-maintain.
- Manfaatin Built-in Tooling (Tips Produktivitas!):
Lupakan setup ESlint, Prettier, Jest satu per satu. Di Deno, ini udah ada! * Formatting: deno fmt nama_file.ts
atau deno fmt .
buat semua file di direktori. * Linting: deno lint nama_file.ts
atau deno lint .
* Testing: Buat file test (konvensinya nama file diakhiri test.ts
atau test.js
).
typescript
// file: mymoduletest.ts
import { assertEquals } from "https://deno.land/[email protected]/assert/mod.ts";
Jalankan pake command: deno test
. Deno bakal otomatis nyari file test dan jalanin. * Bundling: Butuh satu file JS buat deploy atau share? deno bundle main.ts bundle.js
. Compiling: Bikin CLI tool yang bisa langsung dijalankan tanpa install Deno? deno compile --allow-read --allow-write main.ts
. Ini bakal bikin executable yang self-contained*!
- Konfigurasi Pakai
deno.jsonc
(Tips Profesional):
Untuk proyek yang lebih serius, kamu bisa pakai file konfigurasi deno.jsonc
. Di sini kamu bisa atur banyak hal, termasuk lint rules, formatter settings, sampai bikin task custom.
jsonc
// file: deno.jsonc
{
"fmt": {
"options": {
"useTabs": false,
"lineWidth": 80,
"indentWidth": 2,
"singleQuote": true
}
},
"lint": {
"rules": {
"tags": ["recommended"]
}
},
"tasks": {
"start": "deno run --allow-net server.ts",
"dev": "deno run --allow-net --watch server.ts", // --watch buat auto-restart saat ada perubahan
"test": "deno test --allow-net",
"fmt": "deno fmt",
"lint": "deno lint"
},
"imports": {
"~/": "./" // Bisa bikin alias buat import lokal
}
}
Dengan deno.jsonc
ini, kamu bisa jalankan task kayak deno task start
atau deno task test
. Ini mirip scripts di package.json
tapi terintegrasi langsung dengan Deno tooling. Lebih rapi dan standar.
- Membangun Aplikasi Web (Tips Backend):
Meski Deno punya Deno.serve
bawaan, biasanya untuk aplikasi web yang lebih kompleks, kita pakai framework atau middleware. Yang populer di Deno ada Oak (mirip Koa) atau Aleph.js (framework full-stack). Contoh pakai Oak (instal Oak nggak pakai npm install
, tapi di-import dari URL):
typescript
// file: app.ts
import { Application, Router } from "https://deno.land/x/[email protected]/mod.ts"; // Versi Oakconst router = new Router();
router
.get("/", (context) => {
context.response.body = "Hello, Deno and Oak!";
})
.get("/greet/:name", (context) => {
if (context.params.name) {
context.response.body = Hello, ${context.params.name}!;
}
});const app = new Application();
app.use(router.routes());
app.use(router.allowedMethods());
Jalankan: deno run --allow-net app.ts
. Tinggal buka browser ke http://localhost:8000/
atau http://localhost:8000/greet/Budi
.
- Interaksi dengan File System dan Environment (Tips I/O):
Deno punya API yang gampang banget buat baca/tulis file atau akses environment variables (tentunya dengan izin!). Baca file:
typescript
// file: read_file.ts
const filePath = "./my_data.txt";
try {
const content = await Deno.readTextFile(filePath);
console.log("Isi file:", content);
} catch (error) {
console.error("Error reading file:", error);
}
Jalankan: deno run --allow-read read_file.ts
.
Akses Environment Variable:
typescript
// file: show_env.ts
const homeDir = Deno.env.get("HOME"); // Di Windows mungkin USERPROFILE
console.log("Home directory:", homeDir);
Jalankan: deno run --allow-env show_env.ts
.
API-API ini didesain pakai async/await secara default, bikin kodenya lebih readable buat operasi I/O.
Kenapa Deno Bikin Ngoding Jadi "Gini"?
Dari semua fitur dan tips di atas, kelihatan kan feel ngoding pakai Deno itu beda? Lebih Aman: Kamu jadi lebih aware* soal izin akses script. Lebih Simpel Setup: Proyek baru langsung bisa fokus ke kodenya, nggak buang waktu setup tooling* dasar. Format, lint, test, udah bawaan. Lebih Cepat: Startup* proyek lebih cepat karena nggak ada node_modules
raksasa.
- Lebih Modern: Pake standar JS/TS terbaru, ES Modules native, Top-Level Await.
- Developer Experience (DX) Oke: Integrasi TS yang mulus dan API yang mirip browser bikin betah ngoding.
Pake Deno itu kayak kamu dikasih paket starter komplit buat bikin macem-macem hal pakai JavaScript/TypeScript tanpa perlu nyari dan setup alat-alat terpisah di awal. Filosofi "simple is better" kerasa banget di sini.
Jadi, Deno ini Buat Siapa?
Deno cocok banget buat:
- Developer yang mau nyoba sesuatu yang baru dan modern di ekosistem JS/TS.
Developer yang pengen developer experience* yang lebih terintegrasi.
- Developer yang concern sama keamanan script.
Developer yang suka TypeScript dan pengen support* native. Tim yang mau memulai proyek baru dan pengen stack* yang minimalis dan standar. Developer yang pengen bikin command-line interface (CLI) tools sendiri (fitur deno compile
itu killer*!).
Memang sih, ekosistem Deno belum sebesar Node.js, library pihak ketiga yang tersedia juga belum sebanyak di npm. Tapi Deno Standard Library (di https://deno.land/std
) itu udah lumayan lengkap buat tugas-tugas umum (HTTP server, file system, testing, dll.). Dan komunitasnya lagi berkembang pesat lho. Banyak library keren udah mulai porting ke Deno atau bikin versi native Deno.
Kesimpulan: Worth It Dicoba!
Pake Deno emang bikin ngoding jadi "gini": lebih sat-set di awal proyek, lebih aman, lebih modern, dan terasa lebih rapi karena banyak tooling udah built-in dan nggak ada node_modules
. Ini bukan soal mana yang lebih baik 100% antara Deno dan "yang lama", tapi lebih ke Deno menawarkan pendekatan yang beda, yang mungkin lebih cocok buat proyek-proyek baru kamu atau kalau kamu emang nyari DX yang spesifik seperti yang Deno tawarkan.
Kalau kamu penasaran, nggak ada salahnya nyobain Deno buat proyek kecil atau sekadar eksperimen. Instalasi mudah, belajar dasarnya nggak susah, dan developer experience yang ditawarkan bisa jadi bikin kamu ketagihan. Jadi, siap bikin ngoding kamu jadi "gini" pake Deno? Cobain deh!