Sails.js の最新版 (記事作成時v0.9.3) が結構変わっているようなので、今まで使っていた v0.8.9 のtips(というには大げさですが)をまとめておきます。

Sails.js v0.8.9
0.8.x Documentation

導入については過去記事を参照のこと

Sails.js オブジェクト

sails オブジェクト

global["sails"]
すべての sails 環境下で sailsオブジェクトが取得できる

express オブジェクト

sails.express
sails がラップしている express オブジェクト

sails.io (socket.io) オブジェクト

sails.io
sails がラップ(一部拡張)している socket.ioオブジェクト

services オブジェクト

sails.sercices["xxxxx"]
/api/services/xxxxx.jsを自動的読み込み

config オブジェクト

sails.config
config/application.js (local.js) を自動的読み込み
本番環境
application.js を読み込む (.gitignore >> local.js)
開発環境
application.js を local.js で 薄くマージしている。

※ 薄くマージ 内部的に require('underscore')._.extend( a, b )を使っていて、jQuery.extend( a, b ) の挙動とは少し違う

その他 config フォルダ配下のjsファイルは sails.config に割り当てられる

sails.config["xxxxx"]
module.exports.xxxxx = {}

Express/middleware 設定

config/express.jsを作成
sails.config.express.customMiddleware の引数にExpressのappオブジェクトが引き渡される。


module.exports.express = {
  customMiddleware: function(app){
    app.use(@middleware)
  }
}

models オブジェクト

sails.models["xxxxxx"]
api/models/xxxxxx.js を自動的読み込み

WebSocket オブジェクト(サーバサイド)

res.ws
Contoroller処理中、@response.wsで websokcetオブジェクトを取得

WebSocket オブジェクト(クライアントサイド)

ws.socket(SameDomainURL)
socket.io 接続後、jQuery での $.get(URL)のように、ws.socket(URL)でリアルタイムにURLの出力を取得できる

Sails.js イベント

サーバ起動前コールバック

config/bootstrap.js

引数cbの実行前に起動前処理を行う


module.exports.bootstrap = function (cb) {
     cb();
};

サーバ起動後コールバック

app.js


sails.lift(function(){
     // add function after starting server...
});