Node.jsでHTMLファイルを表示する

Node.js

前回の記事で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();は前回もできてきましたが、ここで処理が終了ということです

コメント

タイトルとURLをコピーしました