二つのexport方式の違い
1769 ワード
nodeの中でモジュールをエクスポートするには、一つは直接にobjectをエクスポートし、functionをexportsの属性とします.第二の方法は一つのfunctionを導き出すことで、本当にエクスポートしたいfunctionはprototypeに書きます.
一つの書き方を見たことがあります.2つの方法を混ぜて使うのです.
実はもう一つの簡単な方法があります.デフォルトでは、this、export、module.exportは同じobjectを指しています.
exports.sayHello = sayHello;
function sayHello(){
console.log("hello world");
}
var obj = require("./method1");
obj.sayHello();
別の方法:exports = module.exports = Person;
function Person(){
}
Person.prototype.sayHello = function(){
console.log("hello world");
}
var Person = require("./method2");
var someone = new Person();
someone.sayHello();
両方ともいいです.一つ目はもっと一般的ですが、二つ目の方式(たとえば、express)を使うものも多いです.第二の方法を使えば、外部から導出された構造関数が得られ、いくつかの公共の方法を追加する機会がある.var Person = require("./method2");
Person.prototype.sayAge = function(){
console.log(100);
}
もう一つの利点は、第二の方法で導き出すことです.WebStromで直接プロトタイプにリンクできるfunction定義で、コードを読みやすいです.一つの書き方を見たことがあります.2つの方法を混ぜて使うのです.
exports = module.exports = Person;
function Person(){
}
Person.prototype.sayHello = function(){
console.log("hello world");
}
Person.sayName = function(){
console.log("my name is kyfxbl");
}
var Person = require("./method2");
Person.sayName();
var someone = new Person();
someone.sayHello();
javascriptの中で、functionもobjectで、自分の属性があることができますので、他のfunctionをこのコンストラクションにかけることができます.実はもう一つの簡単な方法があります.デフォルトでは、this、export、module.exportは同じobjectを指しています.
this.sayHello = sayHello;
function sayHello(){
console.log("hello world");
}
sayHello関数をエクスポートすることもできますが、これは直感的ではなく、IDEもsayHelloメソッドを認識できないので、おすすめできません.