「入門Node.jsプログラミング 」の感想・備忘録2

スポンサーリンク
「入門Node.jsプログラミング 」の感想・備忘録1の続き

Lesson8

Express.jsを使う

  • インストール
    npm init
    npm install express
const port = 3000,
  express = require("express"),
  app = express();

app.get("/", (req, res) => {
  res.send('hello2!');
}).get("/items/:id", (req, res) => {
  res.send(`<h1>${req.params.id}</h1>`);
}).listen(port, () => {
  console.log(`Server running on port: ${port}`);
});

ミドルウェア関数

  • 全てのリクエストで共通の処理を定義することができる。
app.use((req, res, next) => {
  console.log(`request made to: ${req.url}`);
  next();
});
// 第1引数を/itemsとすると、/items/1や/items/1/editなどのルートで共通の処理となる。
app.use('/items', (req, res, next) => {
  console.log(`items request made to: ${req.url}`);
  next();
});

nodemon

  • ソース変更を検知して、nodeコマンドを再実行してくれる。
  • npm install nodemon --save-devでインストール。
  • npx nodemon index.jsで実行。
    (または、packge.jsonのscripteに"start": "nodemon index.js",を追加してnpm startで実行)

Lesson9

パラメータを受け取る

  • GETパラメータはreq.query.xxxで取得可能。
  • POSTパラメータは以下の2つのミドルウェア関数を追加するとreq.body.xxxで取得可能となる。
    app.use(express.urlencoded({extended: false}));
    app.use(express.json());

MVCに分ける

const port = 3000;
const express = require("express");
const app = express();
const homeController = require("./controllers/homeController");
app.use(express.urlencoded({extended: false})
).use(express.json());

app.get("/items/:vegetable", homeController.sendReqParam);
app.listen(port, () => {
  console.log(`Server running on port: ${port}`);
});
exports.sendReqParam = (req, res) => {
  res.send(`This is the page for ${req.params.vegetable}`);
};

Lesson10

EJSを使う

  • インストール
    npm init
    npm install express
  • app.set("view engine", "ejs");をindex.jsに追加する。
  • デフォルトではviewsディレクトリのテンプレートが参照される。
const express = require("express");
const layouts = require("express-ejs-layouts");
const app = express();
const homeController = require("./controllers/homeController");
app.set("port", process.env.PORT || 3000);
app.set("view engine", "ejs");
app.use(layouts);

app.get("/name/:name", homeController.respondWithName);
app.listen(app.get('port'), () => {
  console.log(`Server running on port: ${app.get('port')}`);
});
exports.respondWithName = (req, res) => {
  res.render("index", {name: req.params.name});
};
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>App</title>
</head>
<body>
<%- body %>
</body>
</html>
<h1> Hello, <%= name %></h1>

app.set()メソッド

  • app.set('xxx','yyy');でExpressにあらかじめ定義された設定項目に値を設定することができる。
  • 独自のキーを追加することもできる。
    app.set("port", process.env.PORT || 3000);
    console.log(app.get('port'));

コメント