Modul es boleh dilaksanakan dalam nod telah menyokong modul es asli sejak versi 8.5.2. Fungsi ini boleh dihidupkan melalui pilihan baris perintah, juga dikenali sebagai modul ECMAScript , ialah mekanisme penggunaan semula kod JavaScript , tetapi require() tidak boleh digunakan dalam modul es.
Persekitaran pengendalian artikel ini: sistem Windows 10, nodejs versi 12.19.0, komputer Dell G3.
Bermula dari versi 8.5.0, Node.js mula menyokong modul ES asli dan ciri ini boleh dihidupkan melalui pilihan baris arahan. Ciri-ciri baru sebahagian besarnya disebabkan oleh Bradley Farias.
1. Demonstrasi
Struktur direktori kod contoh ini adalah seperti berikut:
esm-demo/ lib.mjs main.mjs
lib.mjs:
export function add(x, y) { return x + y; }
utama. mjs:
import {add} from './lib.mjs'; console.log('Result: '+add(2, 3));
Jalankan demo:
$ node --experimental-modules main.mjs Result: 5
2 Senarai semak: Perkara yang perlu diberi perhatian
Modul ES:
·Anda tidak boleh mengimport. modul secara dinamik. Walau bagaimanapun, kerja pada import dinamik() sedang dijalankan dan sokongan akan tersedia tidak lama lagi.
·Tiada pembolehubah meta seperti __dirname dan __filename. Walau bagaimanapun, terdapat cadangan untuk fungsi yang serupa: "import.meta". Ia mungkin kelihatan seperti ini:
console.log(import.meta.url);
·Kini semua pengecam modul ialah URL (bahagian ini baharu dalam Node.js) :
·Fail - Laluan relatif dengan sambungan fail: ../util/tools.mjs
·Pustaka - Tiada sambungan fail dan tiada laluan lodash
· Bagaimana untuk menjadikan perpustakaan npm tersedia dengan lebih baik dalam pelayar (tanpa menggunakan pengikat) masih perlu dilihat. Satu kemungkinan ialah memperkenalkan data konfigurasi gaya RequireJS yang memetakan laluan ke laluan sebenar. Pada masa ini, adalah menyalahi undang-undang untuk menggunakan pengecam modul laluan kosong dalam penyemak imbas.
Saling kendali dengan modul CJS
Anda boleh mengimport modul CJS, tetapi modul tersebut sentiasa mempunyai eksport lalai sahaja - iaitu nilai modul.eksport. Membuat modul CJS menyokong eksport bernama sedang diusahakan, tetapi mungkin mengambil sedikit masa. Jika anda boleh membantu, anda boleh melakukannya.
import fs1 from 'fs'; console.log(Object.keys(fs1).length); // 86 import * as fs2 from 'fs'; console.log(Object.keys(fs2)); // ['default']
· Anda tidak boleh menggunakan require() dalam modul ES. Sebab utama ialah:
· Resolusi laluan berfungsi sedikit berbeza: ESM tidak menyokong NODE_PATH dan memerlukan.extensions. Selain itu, hakikat bahawa pengecamnya sentiasa URL menyebabkan sedikit perbezaan.
· Modul ES sentiasa dimuatkan secara tidak segerak, yang memastikan keserasian maksimum dengan web. Gaya pemuatan ini tidak boleh dicampur dengan pemuatan segerak modul CJS melalui require().
· Melumpuhkan pemuatan modul segerak juga akan meninggalkan sandaran untuk pengimportan modul ES menunggu Peringkat Atas (ciri yang sedang dipertimbangkan).
Pembelajaran yang disyorkan: "tutorial video nodejs"
Atas ialah kandungan terperinci Bolehkah modul es dilaksanakan dalam nod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!