Sailsフレームワークのほとんどのユーザーは、sailsアプリケーションオブジェクトの基本的なメソッドをいくつかアクセスするだけで済むでしょう。しかし、高度なユースケースがある場合や、Sailsへの貢献を検討している場合は、あまり使われていないこれらのメソッドを詳しく調べたり、Sailsコアのロード順序を参照したりする必要があるかもしれません。
sailsグローバルの無効化Sailsでは、sailsグローバルを使用することをお勧めします。
ただし、sailsの自動グローバル化は無効にできます。複数のSailsアプリインスタンスを同時に存在させる必要がある場合や、グローバルがオプションではないユースケースでは、sailsグローバルを無効にすることが良い考えかもしれません。
sailsグローバルが無効になっている場合、アプリケーションインスタンスを参照する別の方法が必要になります。幸い、これはアプリのほぼどこからでも可能です。
ロードされたすべてのSailsフックの辞書で、それらのアイデンティティによってインデックス化されています。sails.hooksを使用して、インストールしたフックのプロパティとメソッドにアクセスし、Sailsを拡張します。たとえば、sails.hooks.email.send()を呼び出すことでアクセスできます。また、この辞書を使用して、高度な使用法のためにSailsのコアフックにアクセスすることもできます。
デフォルトでは、フックのアイデンティティは、そのフォルダー名の小文字版であり、sails-hook-プレフィックスは削除されています。たとえば、node_modules/sails-hook-emailからロードされたフックのデフォルトのアイデンティティはemailになり、フックはsails.hooks.email経由でアクセスできるようになります。インストールされたフックのアイデンティティは、installedHooks設定プロパティを介して変更できます。
フックの詳細については、フックの概念に関するドキュメントを参照してください。
sails.iosails.sockets.*メソッドによって公開されるAPIは、ほとんどのアプリケーションの要件をカバーするのに十分な柔軟性を備えており、それらを使用することで、基礎となる実装における将来の変更からアプリを保護できます。ただし、従来のSocket.ioアプリからSailsアプリに一部のレガシーコードを移行する場合、Socket.ioと直接やり取りできると便利です。これを実現するために、Sailsは、基礎となるsocket.ioサーバーインスタンス(io)への生のアクセスをsails.ioとして提供します。詳細については、Socket.ioドキュメントを参照してください。Socket.ioを直接使用する場合は、注意して進めてください。
Sailsは、コアフックであるsails-hook-socketsの依存関係として
socket.ioをバンドルしています。
アプリケーションインスタンスは、require('sails')を最初に呼び出したときに自動的に作成されます。
これは、生成されたapp.jsファイルで発生していることです。
var sails = require('sails');
require('sails')への後続の呼び出しは、同じアプリインスタンスを返すことに注意してください。(これが、Sailsアプリインスタンスが「シングルトン」と呼ばれることがある理由です。)
プロセス内で複数のSailsアプリケーションインスタンスを作成する必要がある、型破りなもの(例:Sailsコアのテストの作成)を実装している場合は、require('sails')によって返されるインスタンスを使用しないでください。これは予期しない動作を引き起こす可能性があります。代わりに、Sailsコンストラクターを使用してアプリケーションインスタンスを取得する必要があります。
var Sails = require('sails').constructor;
var sails0 = new Sails();
var sails1 = new Sails();
var sails2 = new Sails();
各アプリインスタンス(sails0、sails1、sails2)は、異なる構成を使用して個別にロード/起動できます。
Sailsをプログラムで使用する方法の詳細については、Sailsでのプログラムによる使用に関する概念的な概要を参照してください。