node.jsの組み込み関数を使ってみる その2
この前の続き。暇がないからあんまり進めないけど……
環境:Ubuntu11.04 64bit / node.js 0.4.8
http://nodejs.jp/nodejs.org_ja/api/timers.html
setInterval(callback, delay, [arg], [...]), clearInterval(intervalId)
delayミリ秒ごとにcallbackを実行するsetIntervalと、それを止めるclearIntervalの2つの関数。
> var count = 0; > var id = setInterval(function() { ... if (count++ > 5) clearInterval(id); ... console.log('interval'); ... }, 1000); > interval interval interval interval interval interval interval
http://nodejs.jp/nodejs.org_ja/api/modules.html
Modules
コンパイル済みでないモジュール……って解釈でいいのかな。というかJavaScriptライブラリ?
ファイルとモジュールは1対1に対応する。hogeモジュール = hoge.jsってことかな。必ずイコールではないだろうけど。
// main.js var homuhomu = require('./homuhomu.js'); console.log(homuhomu.echo(0)); console.log(homuhomu.echo(1)); console.log(homuhomu.echo());
// homuhomu.js var base = 'ほむ'; // houmhomu.jsプライベートな変数 // 公開されてる関数 exports.echo = function(type) { switch (type) { case 0: return base + 'ぅ'; case 1: return base + 'っ'; default: return base + 'ほむ'; } };
$ node main.js ほむぅ ほむっ ほむほむ
Core Modules
require()はコアモジュールを優先的に解釈するのでコアモジュール名と同じ名前のモジュールを作ると読めないみたい。
File Modules
require()で指定された名前のファイルが見つからない場合、".js"を付けたものと".node"を付けたものを読み込もうとする。require('hoge')ならhoge.jsとhoge.nodeかな。
.nodeはコンパイル済みアドオンモジュールとして解釈され、dlopen()で読み込まれる。
require()を呼ぶ際に渡す文字列の最初に"/"を指定した場合は絶対パスとみなされる。require("/home/sasaplus1/hoge.js")とか?
require()を呼ぶ際に渡す文字列の最初に"./"を指定した場合はrequire()を呼ぶファイルからの相対パスになる。hoge.jsをrequire("./hoge.js")と呼ぶライブラリは同じディレクトリ内にhoge.jsがないと読み込めないと。
"/"または"./"がない場合はコアモジュール、もしくはnode_modulesディレクトリから読み込まれる。
とりあえずこの辺までかな……
モジュールのページ結構長い(´・ω・`)
これじゃあマニュアルの劣化コピーだなあ。まだまとめて書いたほうが、ねえ。