Apa Itu Deno Programming? Apakah Akan Menggantikan Node JS?
Jawaban secara singkat adalah (jelas) terlampau awal untuk menjelaskannya, namun berikut beberapa bukti yang kemungkinan mempunyai peranan besar dalam memastikannya.
Sebagai permulaan, Deno ialah ciptaan Ryan Dahl, yang dikenal juga sebagai pembuat benda kecil namanya Node.js, kedengar akrab? Apa itu memiliki arti Deno secara automatis sebagai alternatif Node secara de facto dan kita semuanya wajib mulai berencana sprint pemfaktoran ulangi kita? Tidak! Tapi bila Anda ingin ketahui semakin banyak, tetaplah membaca!
Mari kita mulai dari pertama
Ryan akan membahas 10 hal paling atas yang menurut dia salah dengan Node.js, dan diakhir presentasi itu, ia mengeluarkan Deno, waktu itu cuma project kecil di mana ia membuat apa yang Anda harapkan. d panggil Node.js v2, dipertingkat dan semakin aman.
2 tahun selanjutnya, tanggalnya sudah diputuskan: 13 Mei, saat tersebut Deno 1.0 akan dirilis dengan cara resmi. Runtime JavaScript baru untuk backend, tapi bukannya dicatat dalam C++, itu dicatat dalam Rust, berdasar basis Tokio (yang sediakan runtime asinkron yang diperlukan oleh JavaScript), walau masih jalankan mesin Google V8.
Tetapi, apa lagi yang baru?
Kami bukan hanya bicara mengenai runtime JavaScript baru yang seutuhnya cocok dengan Node.js sekarang ini, kebalikannya, Ryan ambil peluang untuk mengolah banyak hal ke Deno yang ia kira lenyap dari kreativitas awalnya.
Keamanan terpadu
Secara standar, Node.js memungkinkannya Anda untuk terhubung semua, maknanya, Anda bisa menulis dan membaca ke mekanisme file, membuat keinginan keluar, terhubung faktor lingkungan, dan lain-lain. Walau sebagai pengembang mempunyai akses seperti itu sebagai keuntungan, itu buka resiko keamanan bila Anda tidak waspada saat menulis code Anda sendiri.
Jadi sebagai tukarnya, Deno memakai argument baris perintah untuk aktifkan atau menonaktifkan akses ke beragam feature keamanan . Maka bila Anda memerlukan skrip Anda agar bisa terhubung folder /etc, Anda bisa melakukan:
deno --allow-read=/etc myscript.ts
Itu memungkinkan kode Anda untuk membaca dari folder, apa saja dan Anda akan memperoleh pengecualian keamanan. Ini serupa dengan basis lain tangani keamanan. Bila Anda ialah pemakai Android, Anda tentu pernah disuruh oleh beberapa program untuk meluluskan mereka terhubung mekanisme yang lain dalam handphone Anda (adalah contact, panggilan telephone, folder, dll), ide yang serupa bisa diaplikasikan di sini. Dengan memakai pertanda ini sebagai sisi dari baris perintah yang menyelesaikan skrip Anda, Anda memberi ijin yang dibutuhkan oleh kode Anda.
Standar library yang lebih lengkap
JavaScript telah meningkatkan Library standarnya sejak versi pertama Node, tetapi masih jauh lebih baik dibandingkan dengan bahasa lain. Deno juga mencoba memperbaikinya dan mengklaim memiliki Library standar yang sangat lengkap yang memungkinkan pengembang menggunakan alat resmi untuk melakukan tugas-tugas dasar dan hanya membutuhkan penggunaan perLibraryan eksternal (ala NPM) untuk tugas-tugas kompleks.
Pada intinya, di luar kotak, Deno datang dengan alat untuk menambah warna ke teks terminal, bekerja dengan susunan data eksternal (seperti biner, csv, yaml, dan lainnya), menciptakan UUID, serta menulis socket situs. Ada pula modul yang lain lebih fundamental, seperti akses mekanisme file, peranan pembantu tanggal, peranan berkaitan http, dan yang lain.
TipeScript Terpadu
Anda membacanya secara benar, bila Anda ialah fans TipeScript, karena itu Deno membantu Anda, tak perlu alat eksternal, secara standar transpilasi ke JavaScript dilaksanakan secara internal, jadi tak perlu cemas mengenai itu.
Walau secara standar Deno tangani beberapa hal, Anda bisa menerpa komposisi dengan memakai file tsconfig.json Anda sendiri:
deno run -c tsconfig.json [your-script.ts]
Komposisi standar adalah memakai model ketat, hingga praktek pengkodean yang tidak dianjurkan akan selekasnya disiagakan.
Tidak ada folder NPM atau node_modules
Yang ini masalah besar karena semua orang dan ibu mereka pernah mengatakan sesuatu tentangnya di masa lalu. Apakah terlalu kembung? Apakah ini cara yang salah untuk mendistribusikan dependensi? Ini jelas merupakan salah satu aspek paling kontroversial dari Node dan Deno memutuskan untuk menyingkirkannya sama sekali.
Jadi bagaimana Deno mengatasi dependensi? Selama ini, cukup dengan meluluskan Anda minta modul dari mana saja. Dalam kata lain, Anda cukup lakukan:
import * as log from "https://deno.land/std/log/mod.ts";
Tidak perlu lagi memiliki repositori terpusat Anda sendiri, tetapi Anda harus berhati-hati dengan praktik ini, karena mengimpor modul dari sumber pihak ketiga yang tidak Anda kendalikan, membuat Anda terbuka dan terbuka.
Bahkan, package.json sobat baik kita juga hilang, manajemen ketergantungan sekarang disederhanakan dengan memiliki daftar modul dan URL masing-masing pada file bernama deps.ts . Tapi bagaimana dengan pembuatan versi? Saya mendengar Anda bertanya. Ya, Anda dapat menentukan versi paket di URL, itu tidak terlalu elegan, tetapi berfungsi.
File deps.ts normal dapat terlihat seperti ini:
quotexport { assert } from "https://deno.land/[email protected]/testing/asserts.ts";
export { green, bold } from &;https://deno.land/[email protected]/fmt/colors.ts";
Itu akan mengekspor ulang modul dan jika Anda ingin mengubah versinya, sederhanakan modifikasi URL yang sesuai.
Omong-omong, kode yang diimpor di-cache, pertama kali Anda menjalankan skrip dan sampai Anda menjalankannya lagi dengan flag --reload.
Apa lagi?
Ada fitur yang lain diikutkan oleh Deno, seperti perkakas yang semakin besar di luar kotak dengan beberapa hal seperti pelari tes, debugger, pemerhati file, dan yang lain. Tapi satu kali lagi, beberapa salah satunya hanya API yang disiapkan oleh bahasa, dan Anda perlu membuat code alat Anda sendiri untuk memakainya.
Mengambil contoh api pemerhati file, yang disiapkan untuk Anda oleh Deno.watchFs , bila Anda cari jalan keluar sama untuk nodemon karena itu Anda harus membuat sendiri. Berikut penampilan skrip 23 baris yang pecahkan permasalahan sama:
Pengguna Caesar2011 menerbitkannya sebagai sisi dari salah satunya repo-nya, Anda bisa mendapati kode selengkapnya di sini.
Maka apa ini akan gantikan Node.js dalam kurun waktu dekat?
Tidak, sebenarnya, judulnya sedikit clickbait. Sebagian dari kami mulai memakai Node.js waktu itu masih sekitaran versus 0.10, dan kami memakainya dalam produksi! Cukup mengerikan untuk menjelaskan yang sebetulnya, tapi kami melakukan karena tidak ada yang semacam itu. Baik PHP, Python, atau bahkan juga Ruby (apa lagi Java atau.NET) tidak bisa dibanding dengan mempunyai JavaScript dan mode I/O asinkron di back-end, semua pada sebuah. Dan sepanjang tahun, Node (dan JavaScript) sudah berevolusi untuk penuhi syarat industri. Apa ini prima? Tidak! Tetapi seperti hal-hal lain dalam kehidupan, tidak ada yang prima dalam soal bahasa pemrograman.
Deno juga demikian, hanya karena saat ini, ini hanyalah puncak dari sekitar 2 tahun pengerjaan sebuah ide. Itu belum dicoba dan diuji dalam sistem produksi. Itu belum ditinjau dan dimasukkan ke dalam kasus penggunaan yang aneh dan tidak disengaja untuk melihat bagaimana menangani situasi perbatasan tersebut. Dan sampai itu terjadi, itu hanya akan menjadi mainan untuk dimainkan oleh pengguna awal. Mungkin dalam setahun, kita akan mulai mendengar dari perusahaan berbagi pengalaman mereka dengannya, bagaimana mereka memecahkan kekurangan yang baru ditemukan, dan akhirnya, komunitas di belakangnya akan menyesuaikannya ke titik yang berguna. Apakah itu akan menggantikan Node? Siapa tahu! Kita harus menunggu dan melihat.
Jadi apa yang Anda pikirkan?
bit.dev | Hub Bagian Cloud
Terbitkan komponen yang bisa dipakai kembali darimanakah saja ke satu hub komponen. Pakai Bit untuk mendokumenkan, atur, serta mencari penyempurnaan dan pemakaian elemen.
Pakai Bit dengan tim Anda untuk mengoptimalkan pemakaian kembali kode, percepat peningkatan, dan membuat program yang bisa diskalakan.