Pelajari Deno dan Melampaui Node.js
Diterbitkan: 2023-04-20Meskipun Node.js tetap menjadi runtime JavaScript sisi server yang paling banyak digunakan dengan margin yang sangat besar, runtime alternatif seperti Deno dan Bun telah menarik perhatian saat mereka mencoba untuk memperbaiki konsep Node.js.
Deno, yang lebih populer dari dua runtime yang lebih baru, mengatasi beberapa masalah keamanan yang melekat pada Node.js dan memberikan dukungan yang lebih komprehensif untuk teknologi seperti TypeScript dan WebAssembly.
Dalam artikel ini, Anda akan menjelajahi dasar-dasar Deno, mempelajari perbandingannya dengan Node.js dan Bun, dan mengikuti demonstrasi langsung yang menggunakan Deno untuk membuat server web HTTP sederhana.
Apa itu Deno?
Saat pengembang semakin terbiasa dengan JavaScript, mereka melihat potensinya untuk pemrograman di mesin lokal. Jadi, mereka membuat runtime sisi server — lingkungan yang memungkinkan eksekusi kode JavaScript di mesin tanpa menggunakan browser.
Ryan Dahl mengembangkan Node.js untuk tujuan ini dan, kemudian, membuat Deno untuk mengatasi beberapa masalah yang dia temui pada desain asli Node.js. Beberapa kelemahan penting termasuk ketergantungannya pada manajer paket terpusat seperti npm, kurangnya perpustakaan standar, dan pengaturan keamanan lax-by-default.
Beberapa keunggulan utama Deno antara lain sebagai berikut:
- Keamanan secara default — Pengguna harus secara eksplisit memberikan izin kode untuk mengakses jaringan, sistem file, atau lingkungan.
- Dukungan bawaan untuk TypeScript dan WebAssembly — Menjalankan program TypeScript dan WebAssembly di Deno semudah menjalankan program JavaScript. Runtime mengkompilasi bahasa seperti halnya dengan JavaScript.
- Manajer paket yang tidak terpusat — Alih-alih mengandalkan repositori paket seperti npm atau manajer paket Bun, Deno dapat mengimpor kode langsung dari URL. Kemampuan ini berarti Anda dapat memuat dependensi dari mana pun mereka dihosting, termasuk repositori, server, atau CDN GitHub Anda. Deno juga menawarkan layanan script-hosting untuk akses yang lebih mudah.
- Kepatuhan dengan standar web — Deno bertujuan untuk mengikuti API yang sama seperti yang dilakukan browser, yang berarti bahwa kode yang ditulis untuk browser dapat dengan mudah diterjemahkan ke runtime.
Perusahaan besar dan pelaku industri besar seperti Slack, Netlify, dan Supabase telah mengadopsi Deno, tetapi penerapannya di kalangan pengembang web kurang meluas. Menurut survei Stack Overflow 2022, hanya 1,47% pengembang profesional yang menanggapi survei tersebut menggunakan Deno, sementara 46,31% dilaporkan menggunakan Node.js.
Apa yang Deno Lakukan?
Seperti runtime JavaScript lainnya, Deno memungkinkan pengembang untuk menjalankan JavaScript di sisi server. Hasilnya, Anda dapat menggunakan Deno untuk menyelesaikan berbagai macam tugas pemrograman.
Deno paling unggul dalam tugas-tugas seperti mengembangkan aplikasi server yang menanggapi permintaan pengguna berbasis web. Misalnya, jika Anda membuat toko buku online, Anda dapat menggunakan Deno untuk membuat aplikasi yang mengambil informasi dari database PostgreSQL, membuat halaman yang ingin dilihat pengguna, dan mengirimkannya ke browser untuk dirender.
Anda juga dapat menggunakan Deno untuk tugas pemrograman tingkat rendah seperti membuat alat baris perintah untuk mengelola tugas yang harus dilakukan melalui terminal. Dengan kata lain, Anda dapat menggunakan Deno untuk mencapai tujuan yang sama seperti yang Anda capai menggunakan bahasa seperti Python atau Ruby.
Deno vs Node
Deno bertujuan untuk menjadi peningkatan dari Node.js, dan memenuhi janji tersebut di beberapa bidang utama. Deno meningkatkan keamanan dengan mengaktifkan konfigurasi akses yang lebih halus untuk modul kode yang berbeda. Ini juga berfokus pada kepatuhan API standar web, yang memungkinkan pengembang menggunakan kode yang sama di sisi browser dan server.
Untuk tim yang mengerjakan proyek JavaScript sisi server, Deno telah menjadi alternatif yang layak untuk Node. Dan meskipun fungsi serupa telah meyakinkan beberapa pengembang bahwa Deno dapat menggantikan Node.js, kemungkinan ini tidak mungkin karena beberapa alasan utama.
Node.js adalah runtime JavaScript paling populer dan mengumpulkan ekosistem yang luas dari paket yang telah ditulis sebelumnya dan komunitas pengguna aktif yang besar. Sumber daya yang tak ternilai ini membantu Node.js tetap menjadi runtime yang sangat menarik.
Sebaliknya, Deno baru: Versi 1.0 dirilis pada Mei 2020, jadi relatif sedikit pengembang yang memiliki waktu untuk memainkannya. Mempelajari alat baru memperpanjang jadwal pengembangan. Selain itu, tidak jelas apakah Deno akan memberikan manfaat yang signifikan untuk banyak proyek sederhana.
Namun jika Anda membangun aplikasi di area yang mengutamakan keamanan, seperti keuangan, kapabilitas keamanan Deno mungkin membuat peralihan ini bermanfaat.
Deno vs Bun
Mantan insinyur Stripe Jarred Sumner pertama kali merilis Bun pada Juli 2022 untuk pengujian Beta. Bun adalah runtime yang lebih eksperimental daripada Deno dan, tidak seperti Deno, dirancang untuk memiliki kompatibilitas mundur yang ekstensif dengan Node.js.
Bun juga membanggakan kinerja yang sangat cepat, melampaui Node.js dan Deno. Fitur utama mengaktifkan kemampuan ini:
- Mesin yang lebih baik — Alih-alih mesin V8 JavaScript dan Web Assembly Google, Bun menggunakan JavaScriptCore yang lebih cepat dan lebih efisien sebagai mesin JavaScript yang mendasarinya.
- Lebih banyak kontrol kode — Bun ditulis dalam Zig, bahasa tingkat rendah yang memberikan kontrol lebih besar daripada JavaScript atas eksekusi kode.
- Efisiensi yang disetel dengan baik — Tim yang mengerjakan Bun memprioritaskan pemrofilan, pembandingan, dan pengoptimalan selama pengembangan untuk memastikan efisiensi kode.
Bun sangat baru sehingga relatif sedikit dukungan komunitas untuk membantu pemecahan masalah. Meskipun demikian, Bun bisa menyenangkan untuk bereksperimen. Tim yang secara khusus membutuhkan peningkatan kinerja mungkin menganggap Bun berguna untuk proyek mereka, tetapi pengembangan web seringkali memprioritaskan faktor selain kinerja.
Memulai dengan Deno
Sekarang setelah Anda belajar sedikit tentang Deno dan bagaimana perbandingannya dengan runtime JavaScript populer lainnya, saatnya untuk melihat cara kerjanya. Di bagian ini, Anda akan mempelajari cara membuat server sederhana di Deno yang merespons permintaan HTTP dengan "Halo dari server!"
Memasang Deno
Anda dapat menginstal Deno pada mesin sebagai executable biner menggunakan petunjuk instalasi ini dari dokumentasi resmi. Di macOS, misalnya, Anda dapat menginstal Deno dengan perintah brew install deno
.
Cara lain untuk mulai bekerja dengan Deno adalah menginstalnya sebagai paket npm, seperti ini:
Buat folder untuk proyek Anda ( deno_example mungkin) dan jalankan perintah npm init
di dalamnya. (Anda dapat menerima semua opsi default yang disarankan oleh init
saat membuat file package.json dasar.)
Setelah menginisialisasi aplikasi Anda, jalankan npm install deno-bin
untuk menginstal paket biner Deno. Sekarang Anda dapat memperbarui file package.json untuk mengaktifkan peluncuran aplikasi dengan npm start
. Tambahkan garis tebal di bawah ini ke properti objek "skrip" di file package.json default:
"scripts": { "start": "deno run --allow-net app.ts", "test": "echo \"Error: no test specified\" && exit 1" },
Penambahan skrip ini memungkinkan Deno untuk menjalankan modul app.ts dengan hak akses jaringan ( --allow-net
). Ingat, saat bekerja dengan Deno, Anda harus secara eksplisit mengizinkan akses ke jaringan atau sistem file.
Sekarang, Anda siap membuat modul app.ts , yang bertanggung jawab untuk mendengarkan port dan melayani permintaan pengguna.
Membuat Modul App.ts
Membuat server dasar di Deno sangatlah sederhana. Pertama, buat file app.ts dan rekatkan kode berikut:
import { serve } from "https://deno.land/[email protected]/http/server.ts"; serve((_req) => new Response("Hello from the server!"), { port: 8000 });
Kode tersebut menggunakan fungsi serve
dari server.ts Deno library
yang disimpan di situs web resmi Deno.land. Kode ini juga menyediakan penangan fungsi serve
untuk permintaan yang masuk. Fungsi penangan menanggapi setiap permintaan dengan "Halo dari server!"
Fungsi serve
juga mengambil parameter opsional, seperti nomor port yang ingin Anda layani. Di sini, contoh kode menggunakan parameter ini untuk ditayangkan di port 8000.
Selanjutnya, mulai server dengan menjalankan npm start
. Ini harus meluncurkan server yang mendengarkan localhost:8000
dan menanggapi permintaan dengan salam.
Jika Anda ingin memperluas server ke API lengkap, Anda mungkin perlu menambahkan konektivitas database. Itu mudah dilakukan karena komunitas Deno telah membuat driver yang mendukung database populer seperti MariaDB/MySQL, PostgreSQL, MongoDB, dan banyak lagi.
Ringkasan
Runtime berkisar dari umum dan dapat diandalkan hingga sangat eksperimental. Memilih yang tepat untuk proyek Anda bergantung pada proyek Anda dan bagaimana Anda ingin runtime membantu Anda mencapai tujuan.
Node.js berfungsi dengan baik untuk sebagian besar proyek. Ini memiliki ekosistem besar dan komunitas besar yang dapat membantu dengan beragam skenario pemecahan masalah.
Deno memiliki manfaat keamanan ekstra dan pengalaman pengembang yang lebih baik. Pada saat yang sama, ini paling cocok untuk tim berpengalaman sehingga manfaatnya lebih besar daripada waktu dan biaya tenaga untuk mempelajari runtime yang tidak biasa.
Terakhir, meskipun Bun terlalu eksperimental untuk sebagian besar proyek profesional, ini adalah runtime yang unik dan menyenangkan untuk diambil untuk proyek pribadi atau untuk dikembangkan.
Secara keseluruhan, Deno menawarkan keseimbangan antara manfaat Node.js dan kemungkinan percobaan Bun. Meskipun Node.js adalah pilihan yang dapat digunakan untuk sebagian besar proyek, Deno mungkin berada di garis depan bagaimana pengembangan web akan berkembang di masa mendatang.
Sementara itu, latih keterampilan Deno Anda dengan mendaftar ke Tingkat Hobi Hosting Aplikasi Kinsta — coding sekarang dan penskalaan nanti.