Node.js ialah bahasa pengaturcaraan berdasarkan enjin Chrome V8 yang membolehkan JavaScript dijalankan pada pelayan Ia boleh menggunakan modul dan pakej untuk mengatur program dan mengurus kebergantungan dengan mudah. Antaranya, module.exports
dan exports
adalah konsep yang biasa digunakan dalam pemodulatan Artikel ini akan memperkenalkan penggunaannya dalam Node.js.
Dalam Node.js, setiap fail ialah modul bebas Jika anda ingin menggunakan pembolehubah dan fungsi dalam fail dalam modul lain, anda perlukan untuk Mengeksportnya. Kedua-dua pembolehubah module.exports
dan exports
boleh dieksport.
Dalam Node.js, setiap modul mempunyai objek module
, yang mengandungi maklumat berkaitan modul, termasuk atribut exports
. exports
Lekapkan pembolehubah atau fungsi untuk dieksport pada sifat ini, dan kemudian rujuk modul secara luaran melalui fungsi require()
dan panggil pembolehubah dan fungsinya yang dieksport.
Secara lalai, exports
menunjuk kepada rujukan module.exports
, jadi eksport modul boleh dilakukan melalui kedua-dua exports
dan module.exports
Walau bagaimanapun, perlu diperhatikan bahawa hubungan penunjuk antara kedua-duanya tidak selalu sama. Perkara yang sama membawa kepada fakta bahawa kadangkala kita perlu menggunakan module.exports
dan bukannya exports
.
Apabila kami menggunakan exports
untuk mengeksport objek, kami sebenarnya menambah atribut kepada exports
dan menetapkan nilai. Contohnya:
// add.js exports.add = function (a, b) { return a + b; }
Dalam kod di atas, kami menggunakan exports
untuk mengeksport kaedah add()
. Ia bersamaan dengan melaksanakan kod berikut:
exports.add = function (a, b) { return a + b; } module.exports = exports; // exports被默认指向module.exports
Seterusnya, mari kita lihat contoh:
// math.js exports.add = function (a, b) { return a + b; }; exports.sub = function (a, b) { return a - b; }; // app.js const math = require('./math'); console.log(math.add(1, 1)); // 2 console.log(math.sub(1, 1)); // 0
merujuk modul require()
melalui fungsi math
dan memanggil kaedah yang dieksport, dan hasilnya adalah output dengan betul. Kenapa betul?
Kami tahu bahawa exports
menunjuk ke module.exports
secara lalai, dan apabila kami terus menuding exports
ke objek baharu, hubungan penunjuk module.exports
telah ditukar. Apabila Node.js memuatkan modul, ia sebenarnya mengembalikan objek module.exports
dan bukannya objek exports
, jadi selepas menunjuk exports
ke objek baharu, dan kemudian menggunakan objek baharu sebagai nilai module.exports
, Ia adalah operasi eksport sebenar.
exports = { add: function (a, b) { return a + b; }, sub: function (a, b) { return a - b; }, } module.exports = exports;
Nota: Jika anda hanya menetapkan semula atribut exports
, ia tidak akan mengubah hubungan penunjuk antaranya dan module.exports
.
Contohnya:
// multiply.js exports = { mul: function (a, b) { return a * b; } } // app.js const multiply = require('./multiply'); console.log(multiply.mul(2, 5)); // TypeError: multiply.mul is not a function
Dalam kod di atas, exports
menunjuk ke objek baharu, tetapi sifatnya tidak diberikan, jadi nilai yang dieksport ialah undefined
, jadi dalam A TypeError akan berlaku apabila memanggil.
Dalam kebanyakan kes, kami boleh terus menggunakan exports
untuk mengeksport modul. Tetapi kadangkala, kita perlu mengeksport fungsi atau objek terus daripada modul dan bukannya memasangnya pada exports
Dalam kes ini, kita perlu menggunakan module.exports
.
Contohnya:
// foo.js module.exports = function () { console.log('Hello World!') } // app.js const foo = require('./foo'); foo(); // Hello World!
Dalam kod di atas, memberikan terus fungsi kepada module.exports
sebenarnya menggunakan fungsi sebagai objek eksport keseluruhan modul.
Eksport dan modul.eksport ialah pembolehubah yang digunakan untuk mengeksport modul dalam Node.js, ia harus diperhatikan yang mengeksport menghala ke module.exports secara lalai, dan hubungannya tidak selalu menghala ke objek yang sama, jadi kadangkala kita perlu menggunakan module.exports dan bukannya eksport. Apabila memilih untuk menggunakan eksport dan modul.eksport ke modul eksport, anda boleh memilih mengikut situasi sebenar.
Atas ialah kandungan terperinci penggunaan eksport nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!