Answer the question
In order to leave comments, you need to log in
Explain the difference and concepts of node.js modules?
I don't understand a little how module.exports works in node.js. I began to deal with webpack and this problem is very annoying.
1) What is the difference between:
module.exports = function () {} and exports.hello = hello ?
2) How many exports can and should be placed in a separate file?
3) What exactly does the exports object return?
4) Why can't I get to the function call a from another file in which this module is called on the next entry?:
module.exports = function() {
var a = function() {
console.log('Hello')
}
}
Answer the question
In order to leave comments, you need to log in
1) module is a global object. Writing exports.hello = hello executes module.exports.hello = hello. Accordingly, if you need to export more than one module from a module, use exports.func = func. Otherwise, use module.exports = func
2) however you like. But it is more logical to store functions for working with dates, for example, in one file, for working with a database - in another
3) functions
you have a functions.js file:
const hello = (string) => {return 'Hello ' + string;}
exports.func = hello;
const api = require('./functions.js');
api.func('name');
4. It is necessary to return an object with functions because. And you just designate a function inside the module, you can’t call it in any way.
https://www.sitepoint.com/understanding-module-exp...
module.exports изначально содержит пустой объект, exports - ссылка на этот же объект
Вы можете расширять этот объект свойствами, либо присвоить в module.exports что-то другое, только надо учитывать что exports в этом случае будет по-прежнему ссылаться на изначальный объект
После того как модуль отработал во вне вернется то что в самом конце оказалось в module.exports
Примерно все работает так:
Весь код модуля оборачивается в такую конструкцию:
(function(module, require, exports) {
// код модуля вставляется сюда
});
var module = new Module(pathToModuleFile);
var moduleFunction = loadCodeAndRunInVM(module.id);
moduleFunction(module, module.require, module.exports); //Выполнили модуль
cache[module.id] = module.exports;
return module.exports;
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question