
Toma tu futuro en tus propias manos Haz que suceda La vida es un libro para colorear, pero tú tienes los bolígrafos ——Sophie Kinsella, Mi vida no tan perfecta
Crear dos archivos primero
-
índice.js -
util.js
Escribe algo en util.js
exports.hello = 'www';
exports.add = function (a,v) {
return a + v;
}
exports.obj = {ww:33};
Introducir util.js en index.js
console.log('start reauqire')
const util = require('./util');
console.log('end reauqire', util)
console.log('add', util.add)
Ejecute node index.js para ver el resultado

¿Qué sucederá si agrega atributos a util en index.js?
-
index.js agregar propiedades
// index.js
console.log('start reauqire')
const util = require('./util');
console.log('end reauqire', util)
console.log('add', util.add);
util.additional = 'test' // 加这一句
-
util.js más setTimeout
// util.js
exports.hello = 'www';
exports.add = function (a,v) {
return a + v;
}
exports.obj = {ww:33};
setTimeout(() => {
console.log('exports',exports);
}, 2000)
-
El resultado muestra que la adición fue exitosa.
¿Qué sucede si usa module.exports?
-
util.js
exports.hello = 'www';
exports.add = function (a,v) {
return a + v;
}
exports.obj = {ww:33};
module.exports = function minus (a,b) {
return a - b;
}
-
índice.js
// index.js
console.log('start reauqire')
const util = require('./util');
console.log('end reauqire', util)
console.log('add', util.add);
util.additional = 'test'
-
Ejecute node index.js nuevamente. En este momento, la segunda consola no imprime un objeto, sino un método menos exportado por module.exports, lo que indica que la modificación de module.exports cubrirá todas las exportaciones.
¿Qué hay de agregar setTimeout?
-
util.js
exports.hello = 'www';
exports.add = function (a,v) {
return a + v;
}
exports.obj = {ww:33};
module.exports = function minus (a,b) {
return a - b;
}
setTimeout(() => {
console.log('exports',exports);
console.log('module.exports', module.exports);
}, 2000)
-
resultado de impresión
Significa que las exportaciones y module.exports son objetos diferentes, pero cuando se requiere el archivo externo, si hay module.exports, no se referirá a las exportaciones. En index.js, se bloquea adicionalmente las exportaciones, no module.exports.
En conclusión
-
exportaciones y módulo.exportaciones son objetos diferentes -
La modificación de module.exports sobrescribirá todas las exportaciones -
En el archivo requerido externo, cuando hay exportaciones y módulos.exportaciones, la adición de atributos a este archivo se agrega a módulos.exportaciones
Sostén el futuro en tus propias manos y realiza tus sueños. La vida es un libro para colorear, y los crayones están en tus manos. —Sophie Kinsella, Mi vida no tan perfecta




