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

Standard Modules

コンパイル済みのモジュールを使用するもっともも一般的な方法。

var util = require('util');
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ディレクトリから読み込まれる。






とりあえずこの辺までかな……
モジュールのページ結構長い(´・ω・`)


これじゃあマニュアルの劣化コピーだなあ。まだまとめて書いたほうが、ねえ。