はじめてのExpress4
暑い。とにかく暑い。
ここ数ヶ月、仕事とプライベートの疲れから久々に日中からねむねむモードでした。
本来ならRevelでいろいろ片付けたかったのですが、Socket.io(node.js)とのセッション統合がどうにもこうにも、モチベーションが上がらず、後回しって事に。ならば、その実績も充分なExpressやるべって事に。
まず、この考えが蜂蜜に練乳混ぜるぐらい甘かった。
なにしろ、Express4の情報がすくねぇ_| ̄|○
ブログ情報がExpress3系だなんて、だれも(ry
さて、いろいろ忘れそうなので、備忘録。
-
- node.jsのインストール
まず、node.js自体は、公式から各OSにあった奴入れるって事で。
rvmとかgvm相当の管理ツールは後回し。
-
- アプリケーションディレクトリ作成
$ mkdir app_name $ cd app_name
-
- パッケージ管理json作成
データベースは、mongodb、セッションは、Redis、テンプレートはECTと、初心者にしては、超盛りだくさん!
mongodbとredisは、Fusionで別にセットアップ済み、勿論Chefにお任せクッキングしております。
四方八方、超敏感な地雷原となっています。
$ vi package.json
{ "name": "benchwork", "version": "0.0.1", "private": true, "scripts": { "start": "node app" }, "dependencies": { "express": "*", "morgan": "*", "ect": "*", "config": "*", "mongoose": "*", "express-session": "*", "connect-mongo": "*", "connect-redis": "*", "body-parser": "*", "cookie-parser": "*", "socket.io": "*" } }
まず、Express3のチュートリアルを某サイトでみたから、packageで分離とか、地球上の雷を一身で受けた気分ですよ。
それに、express系のまとまったモジュールが、細分化されたとかで、ログとか、parser関連も別々にインストールしないといけなくなったらしいです。つーか、しらんのワシだけ。下記URL様、ありがとうございます。
http://qiita.com/hoshi-takanori/items/2128a6cf1dbb533379a2
$ npm install
ここで、はいんないよ(つд⊂)エーン的なモジュールがあったら、sudo付けてぶち込んでます。
反論は認めるけど賠償はしない●ダ。
-
- ログイン
http://qiita.com/n0bisuke/items/2514197d8791abbc7d87
上記ブログ様で、mongodbを使った方法が懇切丁寧に解説されております。
テンプレートエンジンがEJS?なので、ECTに読み替える必要があります。
とはいえ、変数に@を付けるだけでした。しかも一カ所。
-
-
- セッション周り
-
Redisにセッションを任せたので、その辺の設定をば
app_name/app.js
・ ・ ・ app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); // cookie用 app.use(session( { store: new RedisStore({ host: "192.168.0.253", port: 6379 } ), secret: 'keyboard cat', resave: true, saveUninitialized: true, cookie: { httpOnly: false, maxAge: new Date(Date.now() + 60 * 60 * 1000) } } ) ); ・ ・ ・
Redisストアを使うところは、見れば何となくわかると思います。
オプションは、
https://github.com/tj/connect-redis
を見ること。
セッションについては、
https://github.com/expressjs/session
を見ること。
go Revle の
c.Session.SetDefaultExpiration()
c.Session.SetNoExpiration()
的は所は、resaveでやってるぽいです。
英語なので、うっすら感じただけです。誰か訳して教えて下さい。
これで、rdmとかRobomongoとか使って中身確認すると、うまくいっている(と思うよ)ことが確認できました。