Node.js勉強中に出会ったJavaScriptコードたち解読

よく使い方を忘れるので、必要な時にサッと読み返せるように超完結にまとめておきます。

>勉強中の関連記事まとめ
>[自分用の勉強記事をまとめた目次　~擬似知識体系~](https://qiita.com/oekaki-hoho-ron/items/3194f560efc461ec03b0)

#この記事の用途

Node.jsのフレームワークを勉強するとき、公式チュートリアルのサンプルコードをコピペしてlocalhost接続して動作確認する。その後でコードの意味を分析するためにはJavaScriptが読めなくてはならない。でも0から勉強し直すほど心の余裕もないので、出会ったコードの意味から理解していこうという企画。

#Express.jsで出会った

```app.js
const express = require('express')
const app = express()

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

app.listen(3000, () => console.log('Example app listening on port 3000!'))
```

>参考文献
>[Hello World の例](https://expressjs.com/ja/starter/hello-world.html)

###【サンプルコード解読】const

定数宣言。定数なので値の更新はできない。

```.js
const 定数名 = 値;
```

expressのサンプルコードでは、`express`という名の定数に`express`という名のjsモジュールを読み込んでいる。

```.js
const express = require('express')
```

ちなみに、モジュールとはシステムを構成する機能的にまとまった部分を意味するもので、つまりは外部ファイルを読み込むこと。

###【サンプルコード解読】require

モジュール化されたJavaScriptファイルを読み込む。通常はjsライブラリを読み込むには`<script>`タグでHTMLに記述するが、サーバーサイドでjsを実行する際は`<script>`タグが使えない。そこで、jsファイルをモジュール化して`require`で読み込んで実行するという手法を取る。

```.js
const 定数名 = require( モジュール名 );
```
`require`の引数にモジュール名を指定する。読み込んだモジュールが定数に格納される。jsのインスタンスを作成する感覚に近い。

###【サンプルコード解読】express()



```.js
const app = express()
```

`require`で読み込んだ`express`という名のjsモジュールを`app`という名の定数に格納している。

###【サンプルコード解読】app.get()

```.js
app.get('パス', ミドルウェア関数)
```

JavaScriptの`get()`メソッドとは、サーバーと通信して任意のデータを取得するメソッド。

定数`app`には定数`express`の中に入れた`express`モジュールが入っていて、


>参考文献
>[【jQuery入門】get()の使い方とデータを取得する方法！](https://www.sejuku.net/blog/43650)

###【サンプルコード解読】'/'

このルートパスは、これが記述されているファイルからの相対パスのこと。つまり`index.js`の中で記述されている場合は`http://localhost:3000/`のこと、`about.js`の中で記述されている場合は`http://localhost:3000/sbout`のことを指す。

>参考文献
>[Node.js + ExpressでREST API開発を体験しよう［作成編］](https://qiita.com/tamura_CD/items/e3abdab9b8c5aa35fa6b#%E3%83%9F%E3%83%89%E3%83%AB%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%A8%E3%81%AF)

###【サンプルコード解読】(req, res)

###【サンプルコード解読】=>

アロー関数。`function`のリテラルを省略したもの。

```.js
var v = function(f){
  return f + 1;
};
```

`{}`を省略し、アロー関数で書き直す。

```.js
var v = (f) => 
```

つまりExpressのサンプルコードの

```.js
app.get('/', (req, res) => res.send('Hello World!'))
```

は

```.js
app.get(`/`, function(req, res){
  res.send("Hello World!");
}
```

というコードを省略しているということになる。

よって、定数appに入っている定数expressに入っているexpressモジュールのルートパスにある...
get()メソッドで取得している。

>参考文献
>[【JavaScript】アロー関数の書き方](https://se-tomo.com/2019/02/03/%E3%80%90javascript%E3%80%91%E3%82%A2%E3%83%AD%E3%83%BC%E9%96%A2%E6%95%B0%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9/)

###【サンプルコード解読】res.send('Hello World!'))

`send()`はサーバーにHTTP応答を送信するメソッド。bodyパラメータを渡す。

```.js
res.send([body])
```

リクエストに対して`Hello World`という文字列を渡している。

>参考文献
>[4.x API - res.send([body])](https://expressjs.com/ja/4x/api.html#res.send)

###【サンプルコード解読】app.listen()

`listen`メソッドは、サーバーを待ち受け状態にしてクライアントからリクエストがあれば受け取って処理するためのもの。第一引数にはポート番号を渡す。第二引数にはコールバック関数などを渡す。

```.js
app.listen(ポート番号, コールバック関数)
```

```.js
app.listen(3000, () => console.log('Example app listening on port 3000!'))
```

>参考文献
>[4.x API - app.listen(path, [callback])](https://expressjs.com/ja/4x/api.html#app.listen)
>[Node.jsのスクリプトの基本を覚えよう (1/5)](https://www.tuyano.com/index3?id=1126003)

###【サンプルコード解読】app.jsに記述されていること意訳

```app.js
const express = require('express')
const app = express()

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

app.listen(3000, () => console.log('Example app listening on port 3000!'))
```

1. `express`モジュールを定数`express`に格納して`app.js`内で利用できる状態にする。
1. 定数`app`に`express`モジュールを格納する。 ???
1. 
1. `console.log`の内容をポート3000で待ち受ける状態にする。