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.io
sails.sockets.*
方法公開的 API 具有足夠的彈性,可以滿足大多數應用程式的需求,並且使用它們將使您的應用程式在底層實作中可能發生的變更中具有前瞻性。但是,如果您正在將一些來自原始 Socket.io 應用程式的舊程式碼帶入您的 Sails 應用程式中,則可以直接與 Socket.io 通訊可能會很有用。為了實現這一點,Sails 提供了對底層 socket.io 伺服器實例 (io
) 的原始存取,即 sails.io
。有關更多資訊,請參閱 Socket.io 文件。如果您決定直接使用 Socket.io,請謹慎操作。
Sails 將
socket.io
作為 sails-hook-sockets(一個核心鉤子)的依賴項捆綁在一起。
應用程式實例會在您第一次 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 中以程式設計方式使用的概念概述。