2月 112013
<< YouTubeのAPI || queryの安全な呼び出し >>
もうあるので車輪の再発明だけど、作った
https://github.com/shokai/event_emitter.js
元々sinatra-cometioの中で使っていたのを切り出して、テストとか書いた。
Ruby版といっしょに使うと楽しい。
event emitterとは
Node.jsに含まれているライブラリ。をWebブラウザだけで動くように実装しなおした。
こんな感じでapplyすると
var User = function(){
new EventEmitter().apply(this);
this.name = '';
};
イベント登録して
var user = new User();
user.name = 'shokai';
user.on('go', function(data.place){
alert(user.name+' -> '+data.place);
});
呼び出せるようになる
user.emit('go', {place: 'mountain'}); // "shokai -> mountain"
あと、onのかわりにonceで登録すると1回だけ呼び出せるイベントになったりとかある。
JavaScriptの全てオブジェクトに簡単にイベント機能が追加できる。
くわしくはREADMEを見て。
test
ブラウザで使うjsだけどterminalでテストしたかったので、nodeunitを使った。
このようにnode実行した時はnode moduleとして読み込めるように、event_emitter.jsの末尾でmodule.exportsに登録しておいた。
var EventEmitter = function(){
/** 略 **/
};
if(typeof module !== 'undefined' && typeof module.exports !== 'undefined'){
module.exports = EventEmitter;
}
あとはnodeunitでテストを書いた。
JavaScriptの圧縮
uglify-jsで圧縮した