Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Bolehkah modul es dilaksanakan dalam nod?

Bolehkah modul es dilaksanakan dalam nod?

WBOY
Lepaskan: 2022-07-04 17:08:21
asal
1787 orang telah melayarinya

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.

Bolehkah modul es dilaksanakan dalam nod?

Persekitaran pengendalian artikel ini: sistem Windows 10, nodejs versi 12.19.0, komputer Dell G3.

modul es boleh dilaksanakan dalam nod

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
Salin selepas log masuk

lib.mjs:

export function add(x, y) {
 return x + y;
}
Salin selepas log masuk

utama. mjs:

import {add} from './lib.mjs';
console.log('Result: '+add(2, 3));
Salin selepas log masuk

Jalankan demo:

$ node --experimental-modules main.mjs
Result: 5
Salin selepas log masuk

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']
Salin selepas log masuk

· 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan