Node.js勉強会 in 大阪

 ぶらっとお話を聞いて帰ってきたのでメモ書きを晒す。なぜ会場のWiFiからIPアドレスが割り振られない状態に陥っていたので一部資料は参照できず、聴いた話からとったメモ書きのみです。

MVCフレームワークSalis.jsの機能紹介

Sails.jsとは

  • Railsみたいなフレームワーク
  • チャットなどリアルタイムのものを作るのいい
    • Youtubeにライブコーディングあり
  • Ver 0.8.9 が4月にinfoQで紹介された
  • Express.js/Socket.ioをバンドル
  • BlueprintAPI(CRUD)
  • Expressとの違い
    • URLルーティング -> 自動でやってくれる
    • CRUD標準
    • Expressを使ってる人ではそれほど考慮する必要がない
インストール
npm install -g sails[@0.8.9]
プロジェクト作成
sails new [project]
cd [project] & npm install

-> 記事にまとめているのでそちらを見てほしい

MVC
  • Model -> sails_app/models
  • View -> Views
  • Controller -> 0.8.9からModelと一緒に書く必要がある

ルートマッピングとViewの割り当ては名前で行われる。

表示だけならControllerは省略できる

  • adapter.js
    • データベースに何を使うか

設定関連

  • 本番環境 config/application.js
  • サーバ起動後の処理実行
    • app.js
    • config/bootstrap.js

Socket.io関連

SailsのSocket.ioはsocketから直接Controllerを読み込める

まとめ

  • URLルーティング
  • Express.Socket.ioをラップしている
  • 簡単なAPIサーバならModelですぐできる

エラー&デバッグレベリング

Node.js Error & Debug Leveling

同期・非同期

同期・非同期の違い大事 一部ドキュメントにはニュアンスがいまいちなものもある

Debugger

  • 標準のdebugger -> 使いにくい
  • node-inspector
npm install -f node-inspecteor

Grunt.jsを使ったExpressの開発環境構築

gruntおてゃなにか

  • javascript製タスクランナー
    • 山積みのタスクを肩代わりする
  • インストール
npm install grunt-cli
  • grunt.initConfigに自分がやって貰いたいタスクを書く
  • grunt-initでテンプレートを吐き出せる

? gruntは独自でサーバを持っている ?


FAQ

  • Ajaxでのポーリング -> あいだのルータなどでコネクションをきったりはったりして電気を食う
  • C10K問題の話 -> Apacheなどの実装とOSのリソースの問題
    • Node.jsはシングルスレッド -> 時間かかるような処理はしちゃだめ

個人的所感

 grunt.jsとrailsみたいなものを連携させる時のベストプラクティスとかないかしらね。調べてみよう。