2011年7月15日金曜日

node.jsで自作モジュールの作り方

どうも、俺@昼ごはんは鯛の刺身を食べました。

さて、nodeでモジュールを作る方法についてメモメモです。
nodeは本日v0.5.1がリリースされたとこですね。

nodeで言う「モジュール」というのはjavaやphpなどでいう「クラス」みたいなものです。
でも実態はjavascriptなので、中身は関数群というか関数オブジェクトのかたまりですね。
参考)http://nodejs.org/docs/v0.5.1/api/modules.html#modules
commonsJSの仕様にのっとって利用します。

利用するフレームワークはexpressとします。
サンプルとしてよくある人間クラス(Person)を作ります。
hello()メソッドで"hello!"と、myName()メソッドで自分の名前を出力します。
Person.js
var Person = function(name) {
  this.name = name;
  this.hello = function() {
    console.log("hello");
  };
  this.myName = function() {
    console.log(this.name);
  };
};
module.exports = Person;
module.exportsは、モジュール全体を関数化(オブジェクト化)する時に利用します。
ちなみにjavascriptのprototypeを使うパターンでも同じです。
var Person = function(name) {
  this.name = name;
};
Person.prototype.hello = function() {
  console.log("hello");
};
Person.prototype.myName = function() {
  console.log(this.name);
};
module.exports = Person;

app.js
var Person = require("/path/to/Person");
var p = new Person("koexuka");
p.hello();  // "hello!"
p.myName();  // "koexuka"
です。


またはもう一つやり方があり
Person.js
exports.setName = function(name) {
  this.name = name;
};
exports.hello = function() {
  console.log("hello!");
};
exports.myName = function() {
  console.log(this.name);
};

app.js
var p = require("/path/to/Person");
p.setName("koexuka");
p.hello();  // "hello!"
p.myName();  // "koexuka"
です。
こちらの方が少し簡略ですね。


以上でぇぇぇえぇぇぇぇす。

0 件のコメント: