こんにちは、ユアサです。
今回は前回紹介したNode.jsとExpressを使用して、実際に簡易サーバーを作成していきます。
↓前回の記事はこちら
tech.arms-soft.co.jp
Node.jsとnpmの準備
まずはNode.jsをインストールします。Node.jsの公式ページから各OSのインストーラーをダウンロードします。インストーラーは画面の指示に従いながら設定していきます。
またmacであればパッケージ管理システム「Homebrew」を使用した方法でもインストールができます。以下コマンドでHomebrewを準備します。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Node.jsのインストールから複数のバージョンを管理・切り替えできる「nodebrew」をインストールし、Node.jsをインストールします。
$ brew install nodebrew $ nodebrew install-binary latest $ nodebrew use v7.1.0
これでHomebrewを使用してNode.jsをインストールすることができました。またnpmもNode.jsインストール時に自動的にインストールされます。
Experssをインストールする
まずExpressをインストールするためのフォルダを作成して、ターミナルからコマンドで作成したフォルダの階層まで移動します。
その後、npmのpackage.jsonを作成します。
$ npm init -y
作成されたらExpressのインストールに入っていきます!Express公式ページTOPに表記されているコマンドでインストールできます。
expressjs.com
$ npm install express --save
単純なコマンドだけなので簡単ですね。インストール後にpackage.json内を見てみましょう。成功していると以下のようにExpressのバージョン表記がされています。
作成したHTMLファイルを読み込んで表示させる
ここまででExpressの準備が終わりましたので、いよいよHTMLファイルを表示させていきます。
HTMLファイルの階層ですが、今回はpublicフォルダを作成しその中に作成します。僕の場合はメインとなるindex.html、その同階層にother1.htmlとsubフォルダを作成し、subフォルダ内にother2.htmlを作成しました。以下の通りになりました。
簡単な内容ではありますが、HTMLファイルは以下の通りにコーディングしました。index.html以外の各ファイルもaタグの遷移先が違うだけで同じような作りにしました。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>TOPページ</title> </head> <body> <div> <a href="/other1.html">other1</a> <a href="/sub/other2.html">other2</a> </div> </body> </html>
続いてローカルサーバを立ち上げるための処理をjsファイルに書いていきます。
Express公式ページのQ&Aページで表記されていますが、
特定のファイルがある場合は、res.sendFile() 関数を使用します。 ディレクトリーから多数の資産を提供する場合は、express.static() ミドルウェア関数を使用します。
少々分かりづらい説明ですが、特定のファイル一つのみ表示させたい場合はjsファイル内でres.sendFile()関数を使用し、表示させたいファイルが複数ある場合はexpress.static()ミドルウェア関数というものを使用するということだそうです。今回表示させようとしているページはindex.html、other1.html、other2.htmlの3つになるのでexpress.static()を使用します。
Express公式ページでコーディングの例がアナウンスされているので、このやり方に沿って書いていきます。
expressjs.com
jsファイルはpublicディレクトリと同階層に作成します。
const express = require("express"); const app = express(); app.use(express.static("public")); app.listen(3000, () => { console.log("start"); });
一応jsファイル内の説明をしておくと、
1. 変数expressにexpressを読み込む
2. 変数appにexpress実行できる形として生成(インスタンスの生成)
3. app.use(express.static(“public”))で、expressに提供したい静的ファイルのディレクトリを指定
4. app.listen()で指定したポート番号でサーバを起動
といった流れになります。(app.listen()内のconsole.logはサーバが立ち上がったか念の為確認用のメッセージとして入れました)
今回app.listen()で指定されたポート番号(今回は3000)は他の値でも問題ありませんが、ウェルノウンポート番号と呼ばれる0〜1023の番号はファイルをサーバーに送信するために使うFTPやサーバーにログインする際に使うSSHなどの機能に使用されている場合があるので、これらは原則使用不可です。一般的に3000が使用され、他機能に影響を与える可能性が低いとされています。
ではターミナルからコマンドを入力して起動してみます。
$ node app.js
これで起動できました。ではlocalhostの表示も確認します。http://localhost:3000で表示させてみます。
ブラウザで表示できました!想定通り、リンク先もそれぞれother1.htmlとother2.htmlに遷移しました。
またこのサーバーを終了させるには、再度ターミナルからControl+Cのコマンドで終了できます。
まとめ
前回と今回の二週でNode.jsとExpressを使った簡易サーバーを作成してみました。
Express公式ページを見ると設定次第で他にもできることがありそうなので、より改修していくのも面白そうですね。
最後まで読んでいただきありがとうございました(^人^)
次回のブログ記事の更新は8月24日(水)になります。