Last Updated on April 18, 2022 by
Jika Anda seorang developer JavaScript, tentu sudah tidak asing lagi dengan Node JS, platform untuk menjalankan kode-kode yang ada di JavaScript melalui sisi server. Node diciptakan oleh Ryan Dahl. Kemudian, di bulan Mei 2018, Ryan Dahl menciptakan kembali platform yang mirip dengan Node, yaitu Deno.
Table of Contents
Berkenalan dengan Deno JS
Cara kerja dan fungsi dari Deno di sini sangat mirip dengan Node. Keduanya sama-sama platform untuk menjalankan Deno JS adalah runtime JavaScript. Namun, Ryan Dahl menciptakan Deno agar dapat digunakan untuk menjalankan kode TypeScript juga, serta memiliki keamanan, modul, dan dependensi yang lebih baik.
Ryan Dahl mengklaim Deno sebagai platform untuk menjalankan TypeScript maupun JavaScript yang aman, di mana Deno sendiri dibangun pada runtime engine Google yang diciptakan untuk JavaScript dikenal juga dengan V8.
Beberapa fitur lain yang disematkan pada Deno:
- Inti dari Deno ditulis dengan Rust. Berbeda dengan Node yang intinya ditulis dalam C++.
- Tokio atau event loop pada Deno ditulis dengan Rust.
- Deno juga mendukung penggunaan JavaScript maupun TypeScript.
- Deno dibangun dengan V8, JavaScript Runtime yang diciptakan oleh Google dan digunakan pada Chrome, Node, dan lainnya.
Banyak developer JavaScript yang sudah pernah menggunakan Node menyatakan Deno adalah alternative yang dapat digunakan selain Node.
Deno JS : Menjalankan TypeScript dan JavaScript dengan Keamanan Tinggi
Dengan menggunakan Deno, ada beberapa tujuan keamanan:
- Menggunakan fakta bahwa JavaScript adalah sandbox yang aman. Secara default, skrip harus berjalan tanpa sistem file atau akses tulis jaringan.
- Akses opt-in diaktifkan melalui tanda: –allow-net dan –allow-write.
- Kemampuan keamanan yang memungkinkan pengguna menjalankan utilitas yang tidak tepercaya, seperti linter.
- Fungsi asli sewenang-wenang tidak akan terikat ke V8.
- Panggilan sistem dilakukan dengan melewatkan pesan
- Ada dua fungsi asli: kirim dan terima.
- Audit pada Deno yang lebih mudah diaktifkan.
Fitur-fitur yang ada pada Deno sebagian besar berfokus pada keamanan. Berbeda dengan Node, Deno secara default mengeksekusi kode di dalam sandbox, yang berarti runtime tersebut tidak memiliki akses pada, sistem file (file system), network, eksekusi dari skrip lainnya, dan variabel-variabel lingkugan (environment variables).
Begini cara kerja persmission system yang ada pada Deno:
(async () => {
const encoder = new TextEncoder();
const data = encoder.encode('Hello world\n');
await Deno.writeFile('hello.txt', data);
await Deno.writeFile('hello2.txt', data);
})();
Skrip tersebut membuat dua file teks yaitu ‘hello.txt’ dan ‘hello2.txt’ dengan sebuah pesan ‘Hello World” di dalamnya. Kode tersebut pun akan dieksekusi di dalam sandbox, sehingga ia tak punya akses ke sistem file.
Cara kerja Deno dalam meningkatkan keamanan melalui Node.js tersebut sangatlah sederhana. Secara default, Deno tidak akan membiarkan program mengakses disket, jaringan (network), subproses, atau variabel lingkungan (environmental variables).
Jika Anda perlu mengizinkan salah satu dari ini, Anda dapat ikut serta dengan panji baris perintah, yang dapat dibuat sedetail mungkin, misalnya –allow-read = / tmp atau –allow-net = google.com.
Peningkatan keamanan lain di Deno adalah bahwa Deno akan selalu mati pada kesalahan yang tidak dapat ditemukan, tidak seperti Node.js, yang akan memungkinkan eksekusi untuk dilanjutkan setelah kesalahan yang tidak tertangkap, dengan hasil yang mungkin tidak dapat diprediksi.
Modul pada Deno JS
Di Node.js, Anda memuat modul CommonJS menggunakan kata kunci yang dibutuhkan dan semuanya, standar dan pihak ketiga, secara implisit berasal dari ‘npmjs.com.’ Padaa Deno, Anda memuat modul ES menggunakan kata kunci import dan secara eksplisit menyatakan URL. Sebagai contoh:
import * as log from “https://deno.land/std/log/mod.ts”;
Modul Deno dapat dihosting di mana saja. Tidak ada repositori terpusat untuk modul pihak ketiga. Selain itu, modul selalu disimpan dalam cache dan dikompilasi secara lokal dan tidak diperbarui kecuali Anda secara eksplisit meminta penyegaran (refresh).
Oleh karena itu, Anda harus dapat menjalankan program Deno yang sudah ada di perangkat Anda, selama semua impor telah diselesaikan satu kali, bahkan jika Anda berada di pesawat tanpa konektivitas.
Deno memang memiliki kumpulan modul standar terpusat yang tidak memiliki ketergantungan eksternal dan ditinjau oleh tim inti Deno. Hal itu pun tinggal di server deno.land. Koleksi modul deno_std adalah port lepas dari library standar Go.
Dahl menulis prototipe Deno terutama dalam bahasa Go, tetapi kemudian Dahl menemukan potensi konflik antara garbage collector di Go dan V8. Ryan Dahl dan kolaboratornya kemudian menulis ulang Deno dengan V8, Rust, dan paket I / O asinkron Rust Tokio. Mereka menerapkan pustaka standar Deno di TypeScript.
Pada titik ini, Deno adalah environment yang masuk akal dan menyenangkan untuk digunakan untuk membangun proyek skrip pribadi berskala kecil di TypeScript. Menurut Dahl, Deno tidak akan pernah mempengaruhi kesuksesan Node.js. Namun demikian, setelah Deno mencapai versi 1.0, ini mungkin menjadi pilihan yang layak untuk membangun proyek yang lebih besar.
Deno dibuat dengan tujuan agar kompatibel dengan berbagai browser. Secara teknis, saat menggunakan modul ES, Anda tidak perlu menggunakan alat build apa pun seperti webpack untuk membuat aplikasi kita siap digunakan di browser.
Namun, tools seperti Babel akan mentranspilasi kode tersebut ke JavaScript versi ES5 dan akibatnya, kode tersebut dapat dijalankan bahkan di browser lama yang tidak mendukung semua fitur terbaru dari bahasa tersebut.
Tapi tools tersebut juga datang dengan harga yang berisi banyak kode sehingga tidak diperlukan di file akhir yang dapat mengakibatkan membengkaknya file output. Sehingga, terserah developer untuk memutuskan apa tujuan utama penggunaan modul ini dan memilih yang sesuai.
Perbedaan Node.js dan Deno JS
1. Perbedaan pada Package Management (Manajemen Paket)
Satu perbedaan utama antara Deno dan Node adalah: Deno menghilangkan kebutuhan akan package manager (manajer paket). Saat ini, Node.js menggunakan manajer paket NPM yang populer. Dahl pun menyatakan, di Deno sendiri bahkan tidak ada paket.
Hal ini pun memudahkan pekerjaan Anda, karena Anda hanya perlu menautkan ke file JavaScript seperti yang Anda lakukan di web pada umumnya.
Sementara pada Node.js menggunakan npm package. Ketika menggunakan npm untuk menginstal sebuah paket pada proyek Anda, maka file package.json digunakan untuk untuk menentukan nama paket dan rentang versi yang dapat diterima. Paket itu sendiri (ditambah paket apa pun yang bergantung padanya) kemudian diunduh ke folder node_modules di dalam proyek Anda.
2. Perbedaan pada API
Perbedaan lainnya terletak pada API. Saat Node pertama kali dirilis, tidak ada dukungan bawaan untuk Promises. Akibatnya, sebagian besar API untuk operasi asinkron ditulis untuk melakukan callback error-first:
const fs = require('fs');
fs.readFile('readme.txt', (err, data) => {
if (err) {
// Handle the error
}
// Otherwise handle the data
});
Meskipun developer Node sekarang memiliki akses ke Promises dan sintaks async / await, API masih mengharapkan callback untuk menjaga kompatibilitas ke belakang.
Sementara pada Deno, API Deno telah dirancang untuk memanfaatkan fitur JavaScript modern. Semua metode asynchronous mengembalikan Promises. Deno juga mendukung await tingkat atas, yang berarti Anda dapat menggunakan await di skrip utama Anda tanpa harus membungkusnya dalam fungsi async.
try {
const data = await Deno.readFile('readme.txt');
// Handle the data
} catch (e) {
// Handle the error
}
Tim pengembangan Deno juga membuat keputusan untuk menggunakan standar web jika memungkinkan, yang berarti mereka telah menerapkan API browser jika praktis untuk melakukannya. Deno menyediakan objek jendela global, dan API seperti addEventListener dan fetch.
Memiliki akses untuk mengambil sangat bagus, karena dengan Node Anda harus mem-polyfill ini atau menggunakan pustaka pihak ketiga.
3. Dukungan Bahasa
Deno mendukung fitur ES2020 seperti ‘Promise.allSettled ()’ dan keyword (kata kunci) ‘globalThis.’ Modul ECMAScript pada Deno bersifat default, dengan modul CommonJS tidak didukung kecuali Anda menggunakan pustaka kompatibilitas Node (lebih lanjut tentang ini nanti).
TypeScript didukung sebagai bahasa kelas satu di Deno, yang berarti bahwa ini berfungsi di outbox. Anda tidak perlu menginstal alat tambahan untuk mentranspilasi ke JavaScript terlebih dahulu. Tentu saja, mesin V8 tidak mendukung TypeScript secara bawaan, jadi Deno masih mentranspilasi kode di balik terpal, tetapi ini semua menjadi mulus dan transparan bagi Anda sebagai developer.
Sementara pada Node dukungan bahasanya sedikit berbeda. Rilis Node LTS saat ini (v12.18.1 pada saat penulisan) mendukung sintaks dan fitur JavaScript modern. Hal ini juga mendukung sekitar 75% dari spesifikasi ES2020.
Modul ECMAScript juga didukung, tetapi saat ini hanya diklasifikasikan sebagai eksperimental: Anda perlu menggunakan ekstensi file .mjs, atau menambahkan properti “type”: “module” ke file package.json proyek Anda.
Untuk menjalankan TypeScript (atau bahasa lain) di Node, kode perlu dikompilasi ke JavaScript agar mesin V8 dapat dijalankan. Ada beberapa cara berbeda untuk melakukan ini, dengan pro dan kontra yang berbeda, jadi bangun dan menjalankan berarti harus memilih salah satunya dan mengikuti proses penyiapan yang diperlukan.
Demikianlah penjelasan tentang Deno, serta perbedaanya dengan Node. Jika Anda ingin mencoba menggunakan Deno, Anda dapat menginstalnya dengan mengunjungi link https://deno.land/manual/getting_started/installation. Selamat mencoba.
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.