penggunaan eksport nodejs

WBOY
Lepaskan: 2023-05-14 10:31:06
asal
897 orang telah melayarinya

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.

Hubungan antara modul.eksport dan eksport

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. exportsLekapkan 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.

Perbandingan antara eksport dan modul.eksport

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

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

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

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

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

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.

Senario penggunaan eksport dan modul.eksport

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

Dalam kod di atas, memberikan terus fungsi kepada module.exports sebenarnya menggunakan fungsi sebagai objek eksport keseluruhan modul.

Ringkasan

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!

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