20131012 nodejs

28
Node.js ででで でで ででででででででででででで @morinezumiiii #ibarakidc

Upload: amuro-nishizawa

Post on 13-Jan-2015

684 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 20131012 nodejs

Node.js で色々(続き

茨城でべろっぱコミュニティ@morinezumiiii

#ibarakidc

Page 2: 20131012 nodejs

前回のおさらい

•Node.js はサーバサイド JavaScript

•でもただの JavaScript じゃない

•基本的に非同期型プログラミング→コールバックネストが地獄への階段

Page 3: 20131012 nodejs

前回のおさらい

•MongoDB は NoSQL のひとつ

•他の KVS などと違いドキュメント指向型

•これが上手い具合に RDB 脳にやさしい→と思った?残念!さやk それやると痛い目に遭う

Page 4: 20131012 nodejs

前回のおさらい

•Socket.IO は Node.js モジュールで実装出来る WebSocket

•WebSocket に対応していないクソいブラウザでも Socket.IO が吸収

•使い方によっては jQuery.Ajax の代わりになる(けど全部置き換える必要はない?

Page 5: 20131012 nodejs

おさらい終わり

Page 6: 20131012 nodejs

前回やったこと

•Node.JS をインストール

•MongoDB をインストール

•express.js フレームワークをインストール

•express.js で Socket.IO を使ったチャットアプリを作った

Page 7: 20131012 nodejs

が、中途半端に終わりました

Page 8: 20131012 nodejs

今回はその続き

Page 9: 20131012 nodejs

というか出来上がったものをサックリと解説

Page 10: 20131012 nodejs

作ったもの

•Node.js + express.js + Socket.IO +MongoDB で jQuery は使うけどjQueryAjax を使わないで Socket.IOだけでリアルタイムに MongoDB へのデータ入出力と HTML へのレンダリングが出来るを昨日 2 時間くらいでサクッと作ったアプリ

Page 11: 20131012 nodejs

 こんなんhttps://github.com/morinezumiiii/nodejs-sample-mongoose-socketio

Page 12: 20131012 nodejs

つまりNode.jsNode.js

Socket.IOSocket.IO MongooseMongoose

MongoDBMongoDB

WebWeb ブラウザブラウザSocket.IOSocket.IO HTMLHTML

JadeJade

ユーザ操作ユーザ操作

jQueryjQuery

Page 13: 20131012 nodejs

 いいからコード見せろや

Page 14: 20131012 nodejs

構成

•Node.js

•express.js

•Socket.IO

•Mongoose

Page 15: 20131012 nodejs

構成app.js

package.json

public/

└javascripts/

└client.js

routes/

└index.js

views/

├layout.jade

└index.jade

models/

└users.js

node_modueles/

Page 16: 20131012 nodejs

構成app.js ←Node.js サーバ/リクエスト/ Socket.IO

package.json

public/

└javascripts/

└client.js

routes/

└index.js

views/

├layout.jade

└index.jade

models/

└users.js

node_modueles/

Page 17: 20131012 nodejs

構成app.js

package.json ← ほしい物リストpublic/

└javascripts/

└client.js

routes/

└index.js

views/

├layout.jade

└index.jade

models/

└users.js

node_modueles/

Page 18: 20131012 nodejs

構成app.js

package.json

public/

└javascripts/

└client.js ←New! クライアント側で使用する JavaScript

routes/

└index.js

views/

├layout.jade

└index.jade

models/

└users.js

node_modueles/

Page 19: 20131012 nodejs

構成app.js

package.json

public/

└javascripts/

└client.js

routes/

└index.js ←app.js がリクエストをここにルーティングしてくるviews/

├layout.jade

└index.jade

models/

└users.js

node_modueles/

Page 20: 20131012 nodejs

構成app.js

package.json

public/

└javascripts/

└client.js

routes/

└index.js

views/

├layout.jade ←HTML ヘッダ部分 └index.jade

models/

└users.js

node_modueles/

Page 21: 20131012 nodejs

構成app.js

package.json

public/

└javascripts/

└client.js

routes/

└index.js

views/

├layout.jade

└index.jade ←HTML ボデー部分models/

└users.js

node_modueles/

Page 22: 20131012 nodejs

構成app.js

package.json

public/

└javascripts/

└client.js

routes/

└index.js

views/

├layout.jade

└index.jade

models/

└users.js ←New! Mongoose を使ってコレクションをモデル化node_modueles/

Page 23: 20131012 nodejs

やってること• クライアントから index ページが呼び出され

るクライアント側に jQuery と client.js とsocket.io.js が読み込まれる

• setDataUsers ボタンを押す→ users にドキュメントを追加

• getDataUsers ボタンを押す→ users からドキュメントを取得し、 HTML形式に整形して jQuery によって HTML を書換え

Page 24: 20131012 nodejs

mongoose モデル• mongoose には Schema と Model の機能が

ある

• Schema :コレクションがどうあるべきか定義    ドキュメント作成時に値の validateや     default 値、型チェックも可能

• Model :用意した Schema と MongoDB    コレクションを紐付けてモデル化

Page 25: 20131012 nodejs

exports と require

• require() : Node モジュールをロード     自分で用意した js もロード可能     ※さっきの model や lib など

• exports :外部に公開したい時に使用• 例: models/users.js で

exports.Users = mongoose.model('Users', UserSchema); したものを、 app.js などで var Users = require('./models/users.js').Users すると、app.js 内で Users.find() が使えるようになる

Page 26: 20131012 nodejs

ちなみに

• Mongoose にも便利なプラグインが沢山

• 例えば、 mongoose-file(mongoose-thumbnail)MongooseSchema に Plugin として set することでsave 時に画像ファイルのアップロードとMongoDB のドキュメント内にバイナリ保存→これ自前で作るとめんどくさい

Page 27: 20131012 nodejs

どうでもいいけど• 最近ジョジョを読み始めました

Page 28: 20131012 nodejs

  Thanks!