Rumah  >  Artikel  >  hujung hadapan web  >  apa itu modul nodejs

apa itu modul nodejs

青灯夜游
青灯夜游asal
2021-10-29 15:23:031898semak imbas

Modul ialah komponen asas aplikasi Node.js dan modul berada dalam surat-menyurat satu-dengan-satu. Modul Nodejs ialah fail, dan fail ini mungkin kod JavaScript, JSON atau "C/. C", modul rujukan boleh digunakan dengan pernyataan "require('fail path')".

apa itu modul nodejs

Persekitaran pengendalian tutorial ini: sistem Windows 7, nodejs versi 12.19.0, komputer Dell G3.

Untuk membolehkan fail Node.js memanggil satu sama lain, Node.js menyediakan sistem modul yang ringkas.

Modul ialah komponen asas aplikasi Node.js. Terdapat surat-menyurat satu dengan satu antara fail dan modul. Dalam erti kata lain, fail Node.js ialah modul, yang mungkin kod JavaScript, JSON atau sambungan C/C yang disusun.

Untuk nodej, fail ialah modul Anda boleh mengeksport antara muka atau memerlukan modul lain untuk masuk.

// module1.js
exports.func1 = function(){
        console.log('func1 from module1 called');
}

modul1 menggunakan fungsi func1 sebagai antara muka akses awam modul melalui objek eksport.

//module2.js
var in_module1 = require('./module1.js');
in_module1.func1();
exports.func2 = function(){
        console.log('func2 from module2 called');
}

modul2 memerlukan modul1 Pada masa ini, in_module1 bersamaan dengan objek eksport modul1. Apabila menggunakan in_module1 untuk memanggil func1, ia bersamaan dengan memanggil func1 melalui objek eksport modul1.

Pada masa yang sama, fungsi func2 modul2 sendiri juga berfungsi sebagai antara muka awam modul2 melalui objek eksport modul.

// module3.js
var in_module2 = require('./module2.js');
in_module2.func2();

Begitu juga, modul3 memerlukan modul2 Pada masa ini, in_module2 bersamaan dengan objek eksport modul2.

Hasil yang dijalankan adalah seperti berikut:

rlan@rlan-LA:~/nodejs/nodetest$ node module2.js
func1 from module1 called
rlan@rlan-LA:~/nodejs/nodetest$ node module3.js
func1 from module1 called
func2 from module2 called

Modul yang diperkenalkan oleh nodejs bukan sahaja mendapat antara muka awam modul, tetapi juga merujuk pernyataan lain dalam fail, seperti:

module1.js ditukar kepada

// module2.js
console.log('this is in module2');
var in_module1 = require('./module1.js');
  
in_module1.func1();
  
exports.func2 = function(){
       console.log('func2 from module2 called');
}

modul2 memperkenalkan fungsi func1 modul1 dan melaksanakan pernyataan cetakan dalam modul1:

rlan@rlan-LA:~/nodejs/nodetest$ node module1.js
this is in module1
rlan@rlan-LA:~/nodejs/nodetest$ node module2.js
this is in module2         - module2 self
this is in module1         - require module1
func1 from module1 called  - module2 self

Sekarang, modul2 modul1 dimuatkan dan modul3 telah memuatkan modul2 Apakah yang akan berlaku jika modul3 memuatkan modul1 semula?

// module3.js
var in_module1 = require('./module1.js');
var in_module2 = require('./module2.js');

in_module1.func1();
in_module2.func2();

Pada masa ini, modul3 mula-mula memuatkan modul1, kemudian modul2, dan modul2 sendiri memuatkan bahagian modul1 Hasil yang dijalankan ialah

rlan@rlan-LA:~/nodejs/nodetest$ node module3.js
this is in module1        -  require module1
this is in module2        -  require module2
func1 from module1 called -  require module2
func1 from module1 called -  module3 self
func2 from module2 called -  module3 self

Jika modul3 Laraskan susunan yang diperlukan. :

// module3.js
var in_module2 = require('./module2.js');
var in_module1 = require('./module1.js');

in_module1.func1();
in_module2.func2();

Hasil yang sedang dijalankan ialah:

rlan@rlan-LA:~/nodejs/nodetest$ node module3.js
this is in module2         - require module2
this is in module1         - require module2
func1 from module1 called  - require module2
func1 from module1 called  - module3 self
func2 from module2 called  - module3 self

Nampaknya nodejs menggunakan beberapa mekanisme untuk memastikan modul yang sama tidak akan dimuatkan berulang kali dalam modul lain, jadi baris

this is in module1

hanya muncul sekali, walaupun nampaknya dimuatkan dua kali dalam module3.js.

Jadi, apa yang berlaku jika terdapat pemuatan gelung? Sekarang kita biarkan modul1 memerlukan modul2:

// module1.js
console.log('this is in module1');

var in_module2 = require('./module2.js');

exports.func1 = function(){
        console.log('func1 from module1 called');
}
// module2.js
console.log('this is in module2');
var in_module1 = require('./module1.js');

in_module1.func1();

exports.func2 = function(){
        console.log('func2 from module2 called');
}

Hasil yang dijalankan adalah seperti berikut:

rlan@rlan-LA:~/nodejs/nodetest$ node module1.js
this is in module1
this is in module2
/home/rlan/nodejs/nodetest/module2.js:4
in_module1.func1();
           ^
TypeError: in_module1.func1 is not a function
    at Object.<anonymous> (/home/rlan/nodejs/nodetest/module2.js:4:12)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/rlan/nodejs/nodetest/module1.js:3:18)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
rlan@rlan-LA:~/nodejs/nodetest$ node module2.js
this is in module2
this is in module1
func1 from module1 called

nodejs nampaknya menghalang pemuatan kelakuannya sendiri Apabila menjalankan modul2, tingkah laku adalah sama dengan Hasil modul1 tidak memuatkan modul2 adalah sama, dan tiada ralat dilaporkan. Apabila menjalankan modul1, apabila saya pergi ke modul2 dan mengabaikan pernyataan memerlukan modul1, modul2 memanggil func1 modul1, dan atur cara menjadi salah.

Ringkasnya, bersarang memerlukan penyataan yang memuatkan modul berulang kali (atau memuatkan sendiri) dalam nodej tidak dapat dilaksanakan dengan betul.

[Pembelajaran yang disyorkan: "tutorial nodejs"]

Atas ialah kandungan terperinci apa itu modul nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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
Artikel sebelumnya:Apakah koa dalam nodejsArtikel seterusnya:Apakah koa dalam nodejs