node.jsとはJavaScriptでサーバーまで作れるよという設計手法のことである。
JacaScriptやReactというのはクライアントサイドをつくるものである。
そして、非同期処理を得意とするため、リアルタイムの処理を得意とする。処理の速さも優秀である。
プロジェクトのディレクトリを作成したら、以下のコードを入力する。
npm init -y
これを行うとpackage.jsonが作成される。これによって、作成するプロジェクトの依存関係を管理してくれる。
そして、モジュールをインストールするやり方を示す。
httpモジュールをインストールするには以下のように入力する。
npm install --save-dev http
そうすると、package.jsonのdevDependenciesのところにパッケージが追加されているのが分かる。
実際には、httpモジュールは基からインストールされているので、インストールの必要はない。
インストールの際に「--save-dev」オプションを付与することで「package.json」の"devDependencies"に必要な情報を自動的に追記することが出来る。
そして、サーバーを実行させるには、
node ファイル名
で実行することが出来る。また、実用的なサーバーを実行させる方法は、package.jsonをいじる方法である。
package.jsonのscriptsを以下のように変更する。
"scripts": {
"dev": "node server.js"
},
そうすると、ターミナル上で"scripts"で定めたキーの値を用いて"node server.js"と同じ実行を行うことが出来る。
npm run dev
そうすると、以下のように実行される。
C:\Users\yusuk\node-project\nodejs-tutorial-youtube>npm run dev
> nodejs-tutorial-youtube@1.0.0 dev
> node server.js
nodejs
ちなみに、server.js内の記述は"console.log("nodejs");"である。
そして、サーバーでまずやるべきことはインストールしたモジュールを読み取ることである。
ここでは、httpモジュールを読み込む。
const http = require("http");
requireを使って読み込む。
そして、ここから実際にwebサーバーを作る。
createServerという関数があるのでこれを用いる。そして、今回はアロー関数というものを用いる。
アロー関数を知らなかったので調べてまとめる。
従来の関数式をより簡潔に直感的にした代替構文。使用できる場面は限られている。
const materials = [
'Hydrogen',
'Helium',
'Lithium',
'Beryllium'
];
console.log(materials.map(material => material.length));
// Expected output: Array [8, 6, 7, 9]
例ではこちらのコードが使われいていた。
> Array [8, 6, 7, 9]
出力は上のようになる。
map()関数でリストを展開してそれぞれの要素をmaterialに代入する。そして、それの単語の長さを返すという直感的にわかりやすい構造をしている。
従来の関数とアロー関数を比較する。
// 従来の関数
function (a){
return a + 100;
}
// アロー関数
a => a + 100;
アロー関数ではfunctionという定義とreturnは含まれている。
こちらはよく見るやつ
// 従来の関数
function (a, b){
return a + b + 100;
}
// アロー関数
(a, b) => a + b + 100;
// 従来の関数 (引数なし)
let a = 4;
let b = 2;
function (){
return a + b + 100;
}
// アロー関数 (引数なし)
let a = 4;
let b = 2;
() => a + b + 100;
引数が複数になる場合、()で囲う必要がある。
引数の定義が不要なときも()のみの表記が必要になる。
繰り返し処理をしない場合などは直感的でわかりやすいかもしれない。
ということでアロー関数を用いて、
const server = http.createServer((req, res) => {
});
この中にクライアントからのリクエストがあった場合のレスポンスなどを書いていく。
続きはまた明日書く。