Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 1 year has passed since last update.

Webアプリケーション構築の基本(Node.js+Express)

Last updated at Posted at 2023-06-23

初期設定

バージョンの確認

ターミナル上から、node.jsの環境がインストールされていることを確認します。

ターミナルコマンド
node -v

バージョン情報が以下のように表示されれば、インストールされていることになります。
スクリーンショット 2023-06-22 16.31.12.png

package.jsonを作成(初期化)

以下のコマンドを使用して、pacage.jsonを設定(初期化)します。

ターミナルコマンド
npm init -y

実行すると、以下のようにpackage.jsonがルートフォルダに追加されます。
スクリーンショット 2023-06-22 16.31.28.png

サーバーが起動するかを確認

ルートフォルダにServer.jsのファイルを作成し、サーバーが起動するかを確認します。

ターミナルコマンド
node server.js

以下の画像のように、ターミナル上にログが表示されていれば、起動できていることがわかります。
スクリーンショット 2023-06-22 16.32.12.png

必要なフレームワークをインストール

以下のコマンドを実行し、必要なフレームワークをインストールします。

npm install express nodemon

インストールが完了すれば、ExpressとNodemonのバージョンがpackage.jsonに記述されています。
スクリーンショット 2023-06-22 16.44.46.png

サーバーの起動を確認

package.jsonのscriptsの中を、nodemon server.jsに変更し、起動を確認します。

実行コマンド
“start”: “nodemon server.js”
ターミナルコマンド
npm run start

以下のように動作すれば、問題なく開発を始めることができます。
スクリーンショット 2023-06-22 16.56.27.png

ルーティング設定

routesフォルダを作成し、user.jsを作成し、以下のようにコーディングします。本記事では、"user"としていますが、"user"以外にも、"item"といった別の名前を定義することができます。

server.js
const express = require("express");
const app = express();
const PORT = 3000;
//ユーザー(user)ルーティング元の呼び出し
const userRouter = require("./routes/user");

app.get("/", (req, res) => {
  res.send("ドメイン");
})

//ユーザー(user)ルーティングの使用宣言
app.use("/user", userRouter);

app.listen(PORT, () => console.log("Webアプリケーションが起動しました"));
user.js
const express = require("express");
const router = express.Router();

router.get("/", (req, res) => {
  res.send("ユーザー");
});

router.get("/info", (req, res) => {
  res.send("ユーザー情報");
});

router.get("/:id", (req, res) => {
  res.send(`${req.params.id}ユーザー`);
});

module.exports = router

スクリーンショット 2023-06-22 22.57.18.png

以下のアドレスへアクセスすることで、それぞれのルーティング先のレスポンスがブラウザに返ってきます。

http://localhost:3000/user
http://localhost:3000/user/info
http://localhost:3000/user/12345

レンダリング設定

必要なHTMLファイルをレンダリングするためには、テンプレートエンジンをインストールした後、ejsファイルに記述して、それを呼び出します。

テンプレートエンジンをインストール

npm install ejs

viewsフォルダを作成し、ejsファイルを作成する

スクリーンショット 2023-06-22 23.25.51.png

ejsファイルを呼び出す

リクエストに対して、ejsファイルを呼び出すことで、ejsファイルの内容をブラウザに返すことができるようになります。

サンプルコード
const express = require("express");
const app = express();
const PORT = 3000;
const userRouter = require("./routes/user");

app.set("view engine", "ejs");
app.get("/", (req, res) => {
  res.render("index");
})
app.use("/user", userRouter);

app.listen(PORT, () => console.log("Webアプリケーションが起動しました"));

スクリーンショット 2023-06-22 23.32.13.png

"user"を呼び出したい時などは、viewsフォルダの中に、userフォルダを作るなどして、フォルダ構成を階層化し、呼び出し元で階層構成に準じて、ejsファイルを呼び出せば良い。
スクリーンショット 2023-06-23 14.45.32.png

スタイルCSSの設定

ルートディレクトリにpublicフォルダを作成し、style.cssを作成し、ejsファイルで呼び出しコードを記述します。public内にあるファイルを静的ファイルとして読み込むためには、以下のコードをserver.jsに追記する必要があります。

サンプル
app.use(express.static("public"));

スクリーンショット 2023-06-23 15.06.38.png

環境

  • OS: macOS Ventura 13.4.1
  • VSCode: 1.79.2 (Universal)
  • Node.js: v14.21.3

本記事における注意事項

  • 本記事は、備忘録としてまとめたものになります。
  • 他の方の参考になる可能性も踏まえて、一般公開も行なっております。
  • また記載内容はすべて、正しい内容が記載されているとは限りません。
  • 誤った内容を見つけた場合は、ご指摘をお願いいたします。
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?