Rumah >hujung hadapan web >tutorial js >Modul Deno: Penggunaan, Amalan Terbaik & Import Modul Node
node.js adalah runtime JavaScript berdasarkan enjin Chrome V8 yang dibangunkan oleh Ryan Dahl dan dikeluarkan pada tahun 2009.
Deno juga merupakan runtime JavaScript berdasarkan enjin Chrome V8 yang dibangunkan oleh Ryan Dahl dan dikeluarkan pada tahun 2020. Ia dicipta berdasarkan satu dekad pengalaman. Ini tidak semestinya bermakna ia adalah sekuel untuk node.js atau alternatif yang lebih maju, tetapi ia menyimpang dari laluan node.js.
Lihat juga:
panduan deno kami, termasuk indeks kandungan deno kami (tatal ke akhir)
mata utama
node.js tidak dapat dibayangkan jika ia tidak menyediakan modul, jadi ia mengadopsi commonjs dari beberapa penyelesaian dalam masyarakat. Ini telah membawa kepada pembangunan Pengurus Pakej Node (NPM), yang membolehkan pemaju dengan mudah mencari, menggunakan dan menerbitkan modul JavaScript mereka sendiri.
Penggunaan NPM telah meningkat secara eksponen. Ia telah menjadi pengurus pakej yang paling popular, dan pada pertengahan tahun 2020 ia menjadi tuan rumah hampir 1.5 juta modul dengan lebih daripada 800 penambahan baru setiap hari (Sumber: ModuleCounts.com).
Deno Pilih untuk menggunakan modul ES2015, yang boleh diimport dari URL mutlak atau relatif:
<code>import { something } from 'https://somewhere.com/somehow.js'; </code>
skrip di URL ini mesti mengeksport fungsi atau nilai lain dengan sewajarnya, contohnya:
<code>export function something() { console.log('something was executed'); } </code>
Deno menggunakan sistem modul yang sama seperti yang dilaksanakan dalam pelayar web moden.
node.js juga menyokong modul ES2015 ... tetapi ini rumit dan masih eksperimen. Modul CommonJS dan ES2015 kelihatan serupa, tetapi berfungsi dengan cara yang berbeza:
node.js mesti terus menyokong CommonJs dan mengendalikan modul ES campuran. Oleh itu, ia mengandaikan:
Tiada Pengurus Pakej.
Satu kritikan terhadap NPM adalah skala besar direktori Node_modules untuk setiap projek. Sebagai modul memerlukan versi tertentu modul lain, ia boleh mencapai beratus -ratus megabait.
Deno muat turun dan cache ke direktori global apabila kali pertama Deno menemui URL modul dalam skrip. Jadi tidak kira berapa banyak projek merujuknya, hanya satu salinan versi modul tertentu yang diperlukan.
Saya tahu anda berfikir: "Ah, tetapi jika ..."
... tetapi Deno mempunyai pilihan untuk menyelesaikan masalah yang dibangkitkan oleh URL modul.
URL yang tidak boleh dipercayai
Untuk aplikasi Node.js kritikal, adalah disyorkan untuk menambah direktori Node_modules anda ke Repositori Git/Repositori lain.
Deno menyokong pilihan yang sama. Anda boleh menetapkan pembolehubah persekitaran deno_dir ke laluan direktori dalam projek semasa, contohnya:
<code>DENO_DIR=~/myproject/deno_modules` </code>digunakan dalam Windows Cmd:
atau Windows PowerShell:
<code>> set DENO_DIR="C:\myproject\deno_modules" </code>
Apabila aplikasi anda berjalan, Deno cache modul ke direktori itu supaya mereka dapat ditambah ke repositori kawalan sumber projek.
<code>> $env:DENO_DIR="C:\myproject\deno_modules" </code>
Anda juga mungkin mempertimbangkan kebergantungan bundling ke dalam fail JavaScript atau TypeScript tunggal. Perintah Deno Bundle boleh melakukan ini dalam satu langkah:
di mana MyScript.js adalah skrip kemasukan yang biasanya dilaksanakan menggunakan Deno Run. Fail MyScript.Bundle.js yang dihasilkan boleh digunakan ke pelayan masa nyata.
<code>deno bundle myscript.js myscript.bundle.js</code>
bundle dengan tunggu atas
Deno menyokong menunggu peringkat atas: tidak perlu membungkus panggilan menunggu dalam fungsi async tanpa nama. Malangnya, menunggu peringkat tertinggi gagal dalam bundle, jadi fungsi pembalut mesti ditambah. Ini adalah isu yang diketahui dan akan ditetapkan dalam pelepasan masa depan.
Terakhir: Berhati -hati dengan modul deno rawak pada URL yang luar biasa! Deno, GitHub, atau URL Bitbucket dengan dokumentasi yang baik dan input komuniti umumnya lebih selamat.
Sebaik -baiknya, URL modul harus dibentuk supaya anda dapat merujuk versi kod tertentu. Sebagai contoh, Perpustakaan Standard Deno membolehkan anda memuatkan versi tertentu modul pelayan HTTP:
<code>import { something } from 'https://somewhere.com/somehow.js'; </code>
anda juga boleh merujuk kepada cawangan induk:
<code>export function something() { console.log('something was executed'); } </code>
tetapi ini akan memuat turun versi terkini, dan versi masa depan mungkin tidak sesuai dengan aplikasi anda.
Anda boleh menggunakan konvensyen kawalan versi yang sama untuk menerbitkan modul Deno pada pelayan anda sendiri, tetapi kerana ia menjadi lebih popular, laman web anda mungkin menerima banyak lalu lintas. Cara yang lebih dipercayai ialah menggunakan repositori perkhidmatan seperti GitHub dan memberikan tag Git kepada setiap versi. Perkhidmatan seperti denopkg.com dan unpkg.com boleh digunakan untuk menyediakan URL modul versi awam.
anda mungkin perlu merujuk URL modul yang sama dalam banyak fail dalam asas kod aplikasi. Apabila anda ingin mengemas kini modul, anda perlu menukar URL di beberapa tempat. Cari dan ganti boleh berfungsi, tetapi ia adalah kekok, rawan kesilapan, dan meningkatkan kemungkinan konflik gabungan.
Sebagai alternatif, anda boleh menggunakan fail ketergantungan tunggal yang mengimport setiap modul yang digunakan dalam projek. Ia biasanya dinamakan DEPS.JS atau DEPS.TS:
<code>DENO_DIR=~/myproject/deno_modules` </code>
anda kemudian boleh merujuk modul deno dari deps.js dalam mana -mana fail projek lain:
<code>> set DENO_DIR="C:\myproject\deno_modules" </code>
Apabila modul dikemas kini, anda hanya perlu menukar rujukan URL tunggal di DEPS.JS.
pilihan lain ialah mengimport peta. Ini adalah fail json kecil, biasanya dinamakan import_map.json, yang memberikan nama kepada URL penuh atau separa:
<code>> $env:DENO_DIR="C:\myproject\deno_modules" </code>
anda boleh merujuk nama peta import dalam mana -mana skrip:
<code>deno bundle myscript.js myscript.bundle.js</code>
Kemudian, apabila melaksanakan aplikasi dengan Deno Run, import fail JSON:
<code>import { serve } from 'https://deno.land/std@0.61.0/http/server.ts'; </code>
Peta import kini merupakan fungsi yang tidak stabil, jadi bendera yang tidak dapat digunakan. Ciri ini mungkin berubah dalam versi Deno masa depan.
Kod yang dirujuk dari URL boleh diubah atau digodam tanpa pengetahuan anda. Laman web yang terkenal telah digodam kerana mereka menghubungkan terus ke kod klien pihak ketiga. Bayangkan berapa banyak kerosakan yang akan menyebabkan jika skrip dapat mengakses sumber pelayan.
Deno mempunyai keselamatan terbina dalam, jadi skrip mesti dilaksanakan dengan bendera seperti-dibaca dan --low-net untuk mengehadkan sistem fail dan akses rangkaian. Ini akan membantu mencegah beberapa masalah, tetapi ini bukan pengganti untuk mengesahkan integriti modul!
Deno menyediakan pilihan pemeriksaan integriti. Jika anda menggunakan fail ketergantungan tunggal (seperti yang dinyatakan di atas), ia adalah yang paling mudah:
<code>import { serve } from 'https://deno.land/std/http/server.ts'; </code>
Perintah Deno berikut menghasilkan fail Lock.json yang mengandungi cek semua modul Deno yang diimport:
<code>import { something } from 'https://somewhere.com/somehow.js'; </code>
Apabila pemaju lain klon projek anda, mereka boleh memuatkan semula setiap modul dan mengesahkan integriti setiap modul untuk memastikan ia sama dengan modul anda:
<code>export function something() { console.log('something was executed'); } </code>
Deno tidak menguatkuasakan cek integriti. Adalah lebih baik untuk menjalankan proses ini sebagai cangkuk git automatik atau operasi yang serupa.
banyak Node.js API telah disalin untuk Deno - lihat deno.land/std/node. Ini bukan senarai lengkap, tetapi anda akan menemui fail biasa, acara, penampan, dan modul utiliti.
Pengumpulan hampir 800 modul Deno pihak ketiga disediakan pada
deno.land/x. Terdapat rangka kerja yang serupa dengan Express.js, pemacu pangkalan data, fungsi penyulitan, alat baris arahan, dll.anda juga akan menemui senarai pilihan modul popular, seperti Deno Awesome.
Lebih banyak soalan modul
merujuk kepada URL modul adalah kontroversi, dan bagi mereka dari NPM yang sangat popular, ia boleh mengganggu. Iaitu, Deno memudahkan penggunaan modul JavaScript. Ia menangani beberapa kritikan NPM sambil mengurangkan banyak kesan sampingan yang berpotensi dari modul ES2015.
Mudah untuk menerbitkan modul NPM, dan ia juga mudah untuk mencari npmjs.com. Istilah carian anda boleh mengembalikan 500 hasil, tetapi dengan pakej ranking oleh populariti, kualiti, dan faktor penyelenggaraan, anda boleh meminimumkan lumpuh pemilihan. Mengemukakan kod ke senarai modul pihak ketiga di Deno adalah sukar. Modul mesti lulus ujian automatik, tetapi kualiti tidak dapat dijamin, dan hasil carian disusun mengikut abjad. Sebaik sahaja bilangan modul mencapai beberapa ribu, sistem sedia ada tidak mungkin bertahan.
Ia juga mudah untuk mengemas kini pakej dalam npm. Anda boleh menjalankan NPM ketinggalan zaman untuk melihat senarai kemas kini, atau hanya menjalankan NPM Pasang apabila merujuk nombor versi looser dalam Package.json.
Tiada pilihan semak kemas kini yang setara di Deno. Terdapat projek seperti pengurus pakej yang tersedia, termasuk Trex, kemas kini Deno Dependencies, dan Deno-Check-Updates, tetapi projek-projek ini biasanya bergantung kepada peta import dan sentiasa bergantung pada URL versi semantik.
Sekiranya anda beralih ke Deno?
node.js tidak mati. Ia telah matang dan mempunyai sepuluh tahun pengalaman dalam modul, teknologi, dokumentasi dan runtime.
Deno menggunakan kebanyakan pengetahuan ini, tetapi ia sangat baru dan akan berkembang pesat pada tahun -tahun akan datang. Ia mungkin terlalu awal untuk aplikasi besar, tetapi untuk projek -projek kecil, risiko kurang. Mereka yang sudah menggunakan TypeScript atau dari bahasa lain mungkin menikmati pengalaman yang lebih mudah, tetapi pemaju Node.js tidak akan mengalami kesukaran menukar ke Deno dan kemudian menukar kembali.
Asas Deno
➤ Deno Asas
soalan yang sering ditanya mengenai modul deno
Bagaimana untuk membuat modul di Deno? Mewujudkan modul di Deno adalah mudah. Anda boleh membuat fail baru (contohnya, Module.ts), menentukan fungsi atau kelas anda, dan kemudian mengeksportnya menggunakan kata kunci eksport. Skrip Deno lain boleh mengimport dan menggunakan modul ini.
Bagaimana untuk mengimport modul di Deno? Untuk mengimport modul di Deno, anda boleh menggunakan kata kunci import yang diikuti oleh laluan atau URL modul. Deno menyokong import tempatan dan jauh.
Bolehkah saya menggunakan modul pihak ketiga di Deno? Ya, Deno menyokong pengimportan modul secara langsung dari URL, yang membolehkan anda menggunakan modul pihak ketiga yang dihoskan pada pendaftaran pakej atau repositori GitHub.
Atas ialah kandungan terperinci Modul Deno: Penggunaan, Amalan Terbaik & Import Modul Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!