n_hachiのメモ

メモです。

Express web framework (Node.js/JavaScript)の勉強 part1

webアプリの知識がないことに対しての危機感と興味からExpress web framework (Node.js/JavaScript) - Learn web development | MDN を読んでみることにした。
個人的に気になったところや手順を残す。

私の開発環境は以下の通り

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:        20.04
Codename:       focal

Nodeのインストール

はじめに node をインストールする
私の場合は nodenv を使ってインストールした

Hello World

まずは導入のための章であるHelloworld Express の内容を理解する

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World!')
});

app.listen(port, () => {
  console.log(`Example app listening on port ${port}!`)
});

1行目 const express = require('express');

一行目の const express = require('express'); はモジュールをインポートするためのものである。
自作のファイルや、 node_modules ディレクトリ以下に存在するモジュールをインポートできる。
自作ファイルをインポートする場合には、require(./path/to/myLocalModule);のように、現在のファイルが存在するディレクトリからの相対パスで表現する。
この表記方法はUnixだけでなくWindowsでも可能と記載されている(手元にWindows環境がないため未確認)

参考

2行目 const app = express();

Expressアプリケーションを作成する。
関数express()はモジュールexpressが提供するトップレベルの関数とのことである。
appオブジェクトは下記の目的のためのメソッドを持つ

この章では"httpリクエストのルーティング"機能を使用する
ちなみに変数名がappという名前は慣習らしい

参考

5〜7行目 app.get('/', (req, res) => { ...以下略

特定のパスへのHTTPのGETリクエストを、特定のコールバック関数へと誘導する。
今回の例ではhttp://localhost:3000/に対してGETメソッドが呼ばれた場合に、無名関数(req, res) => { res.send('Hello World!')} が呼ばれる

reqはHTTP Requestを、resはHTTP Responseを表す。
res.send([body])によってResponseのボディ部を作成(内容を登録)するようだ

参考

9〜11行目 app.listen(port, () => { ...以下略

3行目で指定されたport=3000を使ってbindし外部からの接続を待つ
第二引数はおそらくサーバが構築したばあいに実行されるコンソールへの出力と予想する

参考

補足:文字列中に変数の値を埋め込む方法

バッククォートをつかうとできるようだ
bashなどになれているため最初はダブルクォートで囲んでしまい、意図通り動かなくて悩んだ

参考

まとめ

  • expressではappというオブジェクト作成し、そこに対して例えばgetメソッドを使うことで、特定のメソッドへのルーティングを実現する