Express Generatorを使ってみた

BackEnd

直近で、結構Expressフレームワークについて記事にしてきたので、今回はExpressフレームワークを使ってるなら使わな損!って代物を使ってみました!

ExpressGenerator!です!

Expressを個別でインストールしてWebアプリを作った人はわかると思うんやけど、ExpressってWebアプリを作るのにもちろん便利なんやけど、body-parserやったりejsやったり個別でモジュールをインストールせなあかんからインストール忘れたら動かんかったりする

そんなもんを全てひっくるめてパッとWebアプリの雛形を作ってくれるんが、ExpressGeneratorっちゅうやつです!

何はともあれ、やってみよう!

まずは、ExpressGeneratorのソフトウェアをインストールします!これはグローバル環境にインストールします

nom install -g express-generator

この-gがグローバルにインストールしまっせーのオプションです

※ちなみに、カレントディレクトリにインストールする場合は「–save」です。ハイフンは2ついるんで注意!

インストールが完了したら、ExpressGeneratorを使ってアプリを作成!

express -e sample-app

「-e」はテンプレートエンジンに「ejs」を使いますよーって意味のオプション。つけんかったらテンプレートエンジンに「pug」っていうのが使われるらしい。pugについて詳しく知りたいって人はググってください!

作成できたら、「sample-app」っていうディレクトリが作られているはず!

この中に入ると色々すでに揃ってますね!

必要なモジュールなんかは、まだインストールされてないんで、

npm install

を実行するんですが、その前にpackage.jsonの中身を見てみましょう!

すでにdependenciesにいっぱいモジュールが記述されてますねー

これらを「npm install」でインストールするわけです!

もちろん、個別でモジュールを追加したければ、今まで通りインストールできまーす。その際は、このdependenciesに都度モジュール名が自動で追記されていくわけですね。

では、「npm install」を実行!

無事にインストールが完了したら、アプリを実行してみよう!

ExpressGeneratorを使ってなかったときは「node 〇〇.js」ってコマンドでアプリを実行させていましたが、ExpressGeneratorの場合は「npm start」で実行できる!

そして、「http://localhost:3000」にブラウザでアクセスするとこんな画面が表示される

簡単やねーーーーー

一旦ここで、作成したアプリのファイル構成を確認しておきます

ファイルの中身には、こんなけのものが入っている

「bin」:アプリケーションを実行するためのコマンドファイルが保管される場所

npm startコマンドでアプリ実行した時に気づいたかもやけど、これ実はこのbinディレクトリ内のwwwっていうコマンドファイルを実行してたんです。

「public」:公開ディレクトリ。静的コンテンツファイルの配置場所

「images」「javascripts」「stylesheets」ディレクトリにそれぞれ「画像」「JSファイル」「CSSファイル」を保管する

「routes」:ルートごとの処理用スクリプトファイルを保管する場所。用意するページのアドレスごとにスクリプトファイルを作成しルーティングを追加していく

「views」:テンプレートファイルをまとめておく場所

「node_modules」:Node.jsのモジュール類がまとめて保管される場所

「app.js」:これがメインプログラム!

Expressを個別でインストールしてWebアプリを作ってた身としては、

これを一個一個書かなくて済むのは、めちゃくちゃありがたい!!

ざっとソースを追っていきましょう!

まず最初にモジュールのロードを行なっています

http-error:Expressのエラーに関するもの

express:Express本体

path:ファイルパスを扱うためのモジュール

morgan:HTTPリクエストのログ出力に関するモジュール

cookie-parser:Cookieのパースに関するモジュール

次にルート用スクリプトのロードを行なっている

routesフォルダ内にあったスクリプトをロードしている

例えば、/indexというパスでアクセスしてきたときはroutes/index.jsを呼ぶ

というように、アドレスごとに実行するスクリプトファイルを用意するのだ!

こうすることで、1つのスクリプトファイルに記述するのに比べ改修がしやすくなったり、バグが見つかった時にどのパスにリクエストがあった時にバグが起きるかを特定することで、修正対象のファイルを簡単に見つけることができる

その次にExpressオブジェクトの基本設定をしている

app.useでアプリケーションで利用する関数を設定する。これはrequireで読み込んだモジュールの機能を組み込んでいるということ。これらを組み込むことで、Webページにアクセスした際の基本的な処置が行われるようになる

下2行はルーティング情報の設定となり、特定のアドレスにアクセスした時に、起動するスクリプトファイルを設定する

で、エラー関連の処理はここ

最後に「module.exports = app」を記述し、外部のファイルからappというキーでExpressオブジェクトを参照できるようにしている

ほいじゃあ、次はroutesディレクトリ内のindex.jsについてみてみよう

このファイルは、app.jsで確認した通り「/」のアドレスにアクセスしたら実行されるスクリプトになる

ExpressGeneratorではアドレスのマッピングをrouterオブジェクト各メソッドで行うところがポイント

この例では、「router.get」の部分。

で、renderメソッドの第一引数で使用するejsファイルを設定し、第二引数で引き渡す情報を設定している

ま、簡単やね

ではでは、実際に新しい画面を作ってそこルーティング情報の設定を行い実際に画面遷移させてみよう!

手順はこう

1:ejsの作成

2:ルーティング用スクリプトの作成

3:app.jsへの組み込み

はい、やってきます。

1:ejsの作成

まずは画面の作成。viewsディレクトリ内に「hello.ejs」として作成。こんな感じ

何の変哲も無い画面です。強いて説明する箇所があるとするとCSSの読み込みに静的コンテンツ内のstylesheetsというディレクトリ内のstyle.cssを読み込んでいるということぐらいかな。静的コンテンツはapp.jsにあるこのコードの部分で設定している

これでpublicディレクトリ配下は全て静的コンテンツと扱うように設定しているのだ。

2:ルーティング用スクリプトの作成

次に「/hello」でアクセスされた時にこの画面が呼び出されるように、ルーティング用のスクリプトを作成します。

routesディレクトリ内に、hello.jsとしてこんな感じで作成

ポイントはgetの第一引数にアドレスを指定するのだが、ここは「/」と指定すること!

というのものちにapp.jsにこのルーティング用スクリプトを組み込む際にどのアドレスにアクセスがあった時にこのスクリプトファイルを読み込むか設定するからだ!

例えば、app.jsに「/hello」というアドレスでアクセスされた時にこのhello.jsファイルを呼び出すように設定しているのに、router.getメソッドの第一引数に再度「/hello」と指定してしまった場合、「/hello/hello」というアドレスにアクセスがあった時に第二引数の処理が行われるといった設定になってしまうのだ!

ふむふむ、ここ注意すべきだね

で、第二引数の処理内容では、renderメソッドの第一引数に読み込むejsファイルを指定し、第二引数に引き渡す情報を設定している。これで、hello.ejs内の<%= title%>部と<%- content%>部それぞれにデータを引き渡すことができる仕組みだね。

3:app.jsへの組み込み

さあ、最後に作成したルーティング用スクリプトをapp.jsに組み込もう!

こんな感じ

追記したのはポイント1と2の部分

では、npm startで起動して、「hello」にアクセスしてみよう!

はい、オッケー!!

ExpressGeneratorいいですねー

ルーティング情報なんかの設定にファイルを分けれるため、画面が多くなってきた際の保守性も高いし可読性も上がりますなー

今後Node.jsで Webアプリを作るってなったら、このExpressGeneratorを使っていきたいと思いまーす!

では、この辺で今回は終わりにします BYE!

コメント

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