node.jsの組み込み関数を使ってみる
やっとnode.jsを触る暇ができたのでまずは組み込み関数をいろいろ使ってみることに。
そろそろCakefileをちゃんと書けるようにしたいし、いろいろ知っていればできることの幅が広がるだろうし。
環境:Ubuntu11.04 64bit / node.js 0.4.8
http://nodejs.jp/nodejs.org_ja/api/globals.html
global
グローバルなネームスペースのオブジェクト。ただ実際に使うことは少ない気がする。
明示的に書きたい時とかに使ったりするのかな。
> global.console.log('log');
log
require.paths
requireのサーチパス配列。unshift()やpush()をすればサーチパスを追加できる。
> require.paths [ '/home/sasaplus1/.npm/libraries', '', '/home/sasaplus1/.node_modules', '/home/sasaplus1/.node_libraries', '/home/sasaplus1/.nvm/v0.4.8/lib/node' ]
http://nodejs.jp/nodejs.org_ja/api/stdio.html
log(), info()
改行付きで標準出力へプリントする関数。log()もinfo()も同じ。
> console.log('MAX %d', 300); // MAX 300
warn(), error()
log(), info()と同じ、ただし出力先は標準エラー出力。
dir(obj)
objを文字列化した結果を標準エラー出力にプリントする関数。
> console.dir(console) { log: [Function], info: [Function], warn: [Function], error: [Function], dir: [Function], time: [Function], timeEnd: [Function], trace: [Function], assert: [Function] }
time(label), timeEnd(label)
タイマーを作成する関数と、タイマーを終了して結果を出力する関数。
関数の実行時間を計測するときに有用だと思う。
> var TIMER_NAME = 'timer' > console.time(TIMER_NAME) > // ちょっと待つ > console.timeEnd(TIMER_NAME) timer: 15250ms
trace()
> console.trace() Trace: at [object Context]:1:10 at Interface.<anonymous> (repl.js:161:22) at Interface.emit (events.js:64:17) at Interface._onLine (readline.js:153:10) at Interface._line (readline.js:408:8) at Interface._ttyWrite (readline.js:585:14) at ReadStream.<anonymous> (readline.js:73:12) at ReadStream.emit (events.js:81:20) at ReadStream._emitKey (tty_posix.js:307:10) at ReadStream.onData (tty_posix.js:70:12)
assert()
assert.ok()と同じ、とは書いてあるけど……
C言語とかのassert()と同じ使い方かな?
http://nodejs.jp/nodejs.org_ja/api/timers.html
setTimeout(callback, delay, [arg], [...])
delayミリ秒経過後callbackが実行されるようスケジュールする関数。(実行されるようスケジュール、って必ずしもdelayミリ秒後に実行されるわけではないってを暗に言ってるのかな。CPUが忙しいときとか)
戻り値としてclearTimeout()で使えるtimeoutIdが返ってくる。
> setTimeout(function(print){console.log(print);}, 2000, 'timer'); { _idleTimeout: 2000, _onTimeout: [Function], _idlePrev: { repeat: 2, _idleNext: [Circular], _idlePrev: [Circular], callback: [Function] }, _idleNext: { repeat: 2, _idleNext: [Circular], _idlePrev: [Circular], callback: [Function] }, _idleStart: Sat, 04 Jun 2011 01:12:44 GMT } > timer // 2秒後に表示される
clearTimeout(timeoutId)
> var id = setTimeout(function(print){console.log(print);}, 2000, 'timer'); clearTimeout(id); > // 2秒待っても何も表示されない
とりあえずこんなもんかな。てかこれ実際は一昨日やったやつで、書くのを忘れてただけだったり。