Node.jsに触れてから4ヶ月ぐらいたったので、いろいろまとめ。
正確さとか厳密な説明は求めないでください...
環境 : Node v0.10.18 , Express 3.4.5
目次
Node.jsとは
- V8エンジンがベース : GoogleのJSエンジン。強い。
- イベントループ : イベントを待機し、イベントが発生したらそれに応じた処理をする。 cf.スレッドモデル
- ノンブロッキングI/O : InputやOutputは時間がかかる処理。その処理の完了を待たずに次の処理を行う。
準備
- インストールとかは省略
util.logがconsole.log,util.inspectがJSON.Stringifyに当たる
var print = require('util').log; var ins = require('util').inspect;
モジュール
- requireでいろいろ取り込める
- 使い方は公式ドキュメントを見るのが一番
httpモジュールを使ってみる
- HTTPリクエスト(サーバーサイドじゃないけど)
var http = require('http'); var print = require('util').log; var ins = require('util').inspect; var options = { hostname: 'www.google.co.jp', path: '/', method: 'GET' }; var req = http.request(options, function(res){ var body = ""; print('status: ' + res.statusCode); print('headers: ' + ins(res.headers)); res.setEncoding('utf8'); res.on('data', function(chunk){ body += chunk; }); res.on('end', function(){ print('body: ' + body); }); }); req.on('error', function(e){ print('error: ' + e.message); }); req.end();
簡易サーバー作る
- 参考の1番参照
- 本とか読むといいよ。
ExpressでWebページ作る
- Express : Node.js用のWebアプリケーションフレームワーク
- Nodeだけだと色々大変なので、簡単に書けるようにしてくれる
- Rubyだと、Ruby on Railsみたいな
- 導入
npm install -g express - 作成
いずれchatにするかもしれないので、chatという名前で…
express -e chat
オプションの-eはejsというHTMLテンプレートを使うよ、っていうやつ。何も指定しないとjadeっていうテンプレートになる。ejsの方がHTMLに近いしとっつきやすいかもしれない。npm installでexpressが依存してるモジュールを取得する。cd chat npm install - 起動
Webブラウザでlocalhost:3000を見ると…
node app.js - 簡単!!!!
これにいろいろ手を加えていきます。
app.jsを見てみる
- ./routes/index.js と ./routes/user.js をrequireしてる
- app.getがGETリクエストを受け取ったときの処理っぽい
- 第一引数がpath 第二引数がそのときの処理
./routes/index.jsを見てみる
- app.js内のroutes.indexがexports.indexに当たる
- {title:'Express'} ここの'Express'を他のものに変えて再起動してみると…
- res.renderで何か返してるっぽい
./routes/user.jsを見てみる
- res.sendでなにか返してるっぽい
./views/index.ejsを見てみる
- HTMLっぽいけど、ちょっと違う。さっきのHTMLテンプレートというやつ。
- ブラウザで見たページっぽい。
- <%= title %>部分がExpressに置き換わって表示されてた。
- res.renderはviews以下のテンプレートを第二引数を用いて置き換えてHTMLを作り、返してたっぽい
HTMLテンプレート ejs
- <%= hoge %> : 変数hogeに置き換わる
- <% foo %> : javascriptで書ける。ループ処理とか。
- など
- サーバー上にある「静的な」HTMLファイルを返すだけ、という処理では限界がある。
- 「動的に」HTMLを作って返すのがサーバーのお仕事になる。
Node.js + Express + socket.io でチャットを作る
参考になるページ
- Nodeビギナーズブック 日本語訳
- ドットインストール
- Node.js入門
- express入門
備考
- HTTP
- Hypertext Transfer Protocol
- 通信規約の1つ
- WebサーバーとWebクライアント間でHTMLなどのWeb情報の配信に用いる
- メソッド : どのように情報の送信・取得をするか
- GET : 何か取得するやつ
- POST : 何か送信するやつ
- とりあえずはこの2つだけで十分だと思う
- HTTPS
- HTTP + SSL
- セキュリティ面がつよくなったやつ