前回の記事でNode.jsでサーバーを構築して、サーバーにアクセスしてきたらメッセージをクライアントに送ってブラウザ上に表示するというコードを実行しました
確かに、あの方法で簡単なメッセージを送ることはできます
でもHTMLは表示できないの?と疑問に思った人もいるかもしれません
ということで今回はそのやり方について学んでいきましょう
fsオブジェクトについて
前回、httpモジュールをロードして、httpオブジェクトを使い、サーバー構築を行いました
覚えていない人は一度おさらいしておきましょうね こちらからどうぞ
今回はNode.jsに用意されているfsモジュールを使います
fs(File System)の略です
名前の通り、ファイルを扱うオブジェクトです
今回はこのモジュールを使ってHTMLファイルを表示します
ということで、今回のコードです
htmlとjsファイルは同じフォルダにいれてください
今回もモジュールのロードから
const http = require(‘http’); これは前回もでてきましたね
今回もサーバーを作るところからです
そして今回の主役は
const fs = require(‘fs’);です
これでfsモジュールを利用してfsオブジェクトを変数fsに代入します
次はそのオブジェクトが持つメソッドを使って処理を行うという流れです
前回もサーバーの作成ででてきたながれですね
ファイルの読み込み
fs.readFile(‘./index.html’,’UTF-8′,(error,data)=>{…})
ここでファイルを読み込んでいます
fs.readFile(‘ファイル名’,’エンコーディング’,関数)
という書き方になります
ファイル名とエンコーディングをシングルコーテーションで囲み忘れないように気を付けましょう
readFileメソッドは3つの引数を使うことがわかるとおもいます
一つ目の引数で読み込むファイル名
二つ目の引数で読み込むファイルのエンコーディング形式
三つ目でファイルの読み込みが完了した際に実行する関数
ポイントは三つ目です
コールバック関数
三つ目の引数が関数となっています
(error,data)=>{…}
ここです
ファイルの読み込みには時間がかかりますので、終了後に処理をするという形をとっています
ということで、これはコールバック関数です
一つ目の引数でエラーが起こった場合の情報がオブジェクトで渡されます
特にエラーがない場合は空になります
二つ目の引数がファイルから読み込んだデータです
このデータをこの後の関数で処理します
コールバック関数の処理
response.writeHead(200, {‘Content-Type’:’text/html’})
response.write(data);
response.end();
この3行がコールバック関数の処理です
一つずつ見ていきましょう
一行目のwriteHead()でヘッダー情報をレスポンスに書きだします
一つ目の引数の200はステータスコードで、リクエストが成功したことを意味します
二つ目の引数Content-Type: text/htmlでコンテンツの種類がテキストデータでhtml形式のものであるということを示しています
そして、response.write(data);で読み込んだファイルのデータを書き出して、index.htmlがブラウザに出力されます
response.end();は前回もできてきましたが、ここで処理が終了ということです
コメント