libro
www.tuyano.com
初心者のための Node.jsプログラミング入門

Node.jsのスクリプトの基本を覚えよう (3/5)

作成:2013-04-13 10:38
更新:2013-04-13 10:38

■ファイルの読み込みと「fs」オブジェクト

しかし、「responsewriteで書き出すだけ」とはいっても、まさかwriteでHTMLのコードを延々書き出していくわけ? ありえないでしょ。……と思った人。その通り、表示するWebページの内容をスクリプトの中で文字列として用意する――ありえません、そんなの。

やっぱり、表示するページの内容は、HTMLファイルとして用意しておいて、それを読み込んで表示するようになっていなければWebじゃありません。では、次にそれをやってみましょう。

ファイルの読み込みは「fs」というオブジェクトとして用意されています。require関数で「fs」を読み込み、その中にあるメソッドを呼び出して読み込みをします。以下に整理しましょう。

●fsオブジェクトの読み込み
var fs = require('fs');
既にhttpオブジェクトの読み込みはやりましたからわかりますね。fsオブジェクトも同様に読み込み、変数に代入しておきます。

●ファイルの読み込み
fs.readFile( ファイルのパス , エンコード , コールバック関数 );
ファイルの読み込みを行います。普通に考えると「readFileで読み込んだデータを返す」というようなものを想像しますが、違います。readFileには返値はありません。なぜなら、これは非同期で実行される処理だからです。

ファイルの読み込みは、時間のかかる処理です。ですから、「読み込み終えたらデータを返して次に進む」というようになっていると、場合によってはものすごく待たされてしまいます。サーバーでそんなことをしたら、「前にアクセスした人のファイルを読み込み終えるまで全員待ってる」ということになってしまいます。

そこで、「読み込み開始したら、すぐ次の処理に進む」というような設計になっているのです。読み込みの作業はバックグラウンドで行われます。そして読み込みが完了したら、あらかじめ設定しておいた処理を呼び出し、そこで「読み込み後の処理」を行わせる、という考え方です。この「作業が終わったら後で呼び出される関数」のことを「コールバック関数」といいます。

readFileでは、第1引数に読み込むファイルのパスを指定し、第2引数にエンコード名、そして第3引数に読み込み完了後のコールバック関数を用意します。読み込み作業がおわったら、コールバック関数の中で処理を行うようにしておくのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のための Node.jsプログラミング入門」に戻る