はじめてのNode.js 1
この間、社内用のテンプレートファイルを作成するにあたってgulpfileを作成していたのですが、 謎のエラーに遭遇しました。。。
このエラーが、気になって気になってもやもやしてたのですが、
調べてるうちにNode.jsのことを何も分からずに書いてたなあ、と思い勉強したことのまとめです。
1. node.jsとは
javascriptを使ってサーバーサイドのコードを書くことができるプラットフォーム。
イベントループモデルで、ノンブロッキングI/Oを使用している。
特長
V8エンジンで動いている
- chromeで使われているJavascriptエンジン
- ブラウザとほぼ同じJavascriptが書ける
イベント駆動
- 何かのきっかけで処理を行う仕組み
ノンブロッキングI/O
- ファイルの読み込みのような時間がかかる処理を非同期に実行ができる
- 処理を詰まらせずにできる
2. node.jsはイベントループなサーバー
WEBサーバの種類
apache →接続ごとにメモリを確保する為、同時リクエスト数に上限がある。
NGINX
→イベントループで非同期の為同時リクエストに強い。
イベントループなサーバーだと何がいいの?
多くのユーザーの同時アクセス・大量リクエストを捌きやすい。 イベントループで処理を待たずに、イベントが呼ばれるまでループする
node.jsはjavascriptを知っていれば使える。
3. node.jsでwebサーバーを立てる
httpのcreateServerを使います。
var http = requre('http'); //モジュールを読み込む、使う http.createServer(function(req, res){ res.writeHead(200, {'content-Type': 'text/plain'}); res.end('Hello World'); }).listen(3000);
node.jsのモジュール群
Index | Node.js v8.17.0 Documentation
4. expressを使う
expressとは
expressで使ったスケルトンサイト作成
グローバルにexpressをインストール
npm install -g express-generator
※「express-generator」というnpmモジュールを使用すると、アプリのひな型を自動生成することができます。 ビューのテンプレートエンジンも選択でき、すぐに動作を確認することが可能expressアプリケーションの作成
express -e myapp
(-eはejs、myappというプロジェクト)サーバー起動
cd myapp
,npm install
,npm start
5. サーバーから静的ページ配信
Webサーバーは何してる?
ブラウザからのGETリクエストにレスポンスしてデータを返している
expressでGETする流れ
GETとは?
- ブラウザからサイトを見るときに送るHTTPメソッド
- 他にはPOST / PUT / DELETE がある。 用途で分ける
app.get('/newpage', function(req, res){ res.render('newpage', {text: 'ejsに文字列を渡す'}); });
上記コードを詳しく見ていくと、
app.get('/newpage'
ブラウザからどのURLにリクエストが来た時の挙動なのか記述
function(req, res){ res.render('newpage', {text: 'ejsに文字列を渡す'}); });
コールバック関数のレスポンス(res)で指定ejsファイル名をレンダリングするように記述。 このときにテンプレートへ渡す引数があれば引数にいれる
6. まとめ
- node.jsはサーバーサイドでJavaScriptを書くことが出来るプラットフォーム
- 同時アクセスが多く、大量のリクエストがあるサーバー向き
- expressを使えばWebアプリ構築が簡単にできる
- 基本的なサーバはGET / POST などのHTTPメソッドを捌いているだけなので怖くない