以下のようなコードを考える。
var sys = require('sys'); var dog = { "pochi" : 16, "john" : 10 }; var getDogAge = function(name){ return dog[name]; } sys.puts('pochi is ' + getDogAge('pochi') + ' years old.');
以下のようにモジュール化すると非常にすっきりする。
■モジュール側
以下のように記述する。ちなみにgetメソッドなどは予約されていて使用できないようだ。
var dog = { "pochi" : 16, "john" : 10 }; exports.getAge = function(name){ return dog[name]; }
クライアント側から使用するメソッドやプロパティはexportオブジェクトのプロパティとする。それ以外のグローバル空間にある変数や関数はクライアント側からは見えず、プライベート扱いとなる。
■クライアント側
以下のようにして使用する。
var sys = require('sys'); var dog = require('./dog.js'); sys.puts('pochi is ' + dog.getAge('pochi') + ' years old.');
また以下のようにした場合は
var Dog = function(name){ var self = this; self.name = name; self.cry = function(){ sys.puts(self.name); } } module.exports = Dog
以下のように使用することができる。
var Dog = require('./dog.js'); var dog = new Dog();
すっきり。簡単。(●´ω`●)