debug-assert-RequireJS-moduleなるものを作りますた
GitHub - monjudoh/debug-assert-RequireJS-module: RequireJS module for debugging and assertion.
これは何かと言うとRequireJS moduleについて - 文殊堂で説明したRequireJSのmoduleで、
debug支援用のものです。
debug log出力の基本的な使い方
RequireJSのmoduleなので以下のように読み込んでやります。
callbackにdebug関数が渡されてくるのでこいつで適当にdebug printしましょう。
require(['debug'],function(debug){ debug('hogehoge'); });
define(['debug'],function(debug){ debug('fugafuga'); });
consoleがない環境で読み込むとdebugは空関数になるので、
console.debug();をべた書きするより安全です。
console.debugがない場合はconsole.logで出力します。
assert機能
サイボウズで学んだこと - IT戦記
id:amachangのこちらのエントリで書かれていたassertionをやるための機能です。
使い方はdebug関数からさらにassert関数が生えているので、
満たしているべき条件や条件判定結果を返す関数を渡しましょう。
require(['debug'],function(debug){ document.getElementById('button02').onclick=function(){ var textValue = document.getElementById('text02').value; debug(textValue); debug.assert(textValue.length < 4); } });
assertに渡した値がfalsyだとdebuggerでbreakされます。
ステップアウトするよう勧められるのでそのとおりにすると…
原因箇所が表示されます。
元ネタと同じくconsoleにはスタックトレースが吐かれます。
debug用callback
debug関数にcallback関数を渡すと、
その第一,第二引数がconsole,assertになるので、
関数内でガシガシdebug用コードを書けます。
debug関数にcallback関数とthisを渡しておけば、
callback関数内外でthisが同じになるので、
プロダクションコードからdebug用コードに
コピペ出来なくて面倒くさいとかもないでしょう。
また、callback関数内で例外が投げられても外には影響ないので、
安心してdebug用コードを書く事ができます。
require(['debug'],function(debug){ $('div').live('click',function(ev){ debug(function(console,assert){ assert($(this).text() == 'hoge'); console.debug($(this).html()); },this); }); });
まとめ?
仕事でガンガン使って育ててこうと思います。
良かったら使ってみたりforkしていじったりしてみてください。