Sails.js v0.8.9 の 各オブジェクトへのアクセスをまとめてみた
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...
});