※当方駆け出しエンジニアのため、間違っていることも多々あると思いますので、ご了承ください。また、間違いに気付いた方はご一報いただけると幸いです。
あるファイルから、あるファイルをrequireメソッドで呼び出した場合、requireメソッドで呼び出されたファイルのexportsオブジェクトが返される。
どういうことかと言うと、今下のような2つのファイルがある。
main.js
constsub=require("/sub");sub.name("Taro");sub.age("20");
sub.js
exports.name=(name)=>{console.log(name);};exports.age=(age)=>{console.log(age);};
sub.jsを見てみると、
exportオブジェクトのプロパティnameとageに関数が格納されている。
オブジェクトリテラルで表現すると下記のような状態。
exports={name:function(name){console.log(name),name:function(age){console.log(age)};
main.jsでsub.jsをrequireしている。requireすると、requireされたファイルのexportsオブジェクトが返る。
つまり、
main.js
constsub=require("/sub");// ↑ この式は ↓ こういうことconstsub={name:function(name){console.log(name),name:function(age){console.log(age)};
よって
main.js
sub.name("Taro");sub.age("20");//の結果は//Taro//20