為了更容易維護和擴展 Sails 核心,它已經迭代了多次。因此,它具有非常特定的載入順序,其 Hook (鉤子) 非常依賴此順序。此流程概述如下。
收集從命令列、環境變數和程式化配置(即傳遞給 sails.load
或 sails.lift
的選項)傳入的一組配置值。當應用程式透過命令列介面啟動時(透過輸入 sails lift
或 sails console
),任何 .sailsrc
檔案的值也將合併到配置覆寫中。這些覆寫值將優先於下一步中遇到的任何使用者配置。
除非明確禁用 userconfiguration
Hook (鉤子),否則 Sails 接下來將載入目前工作目錄下 config
資料夾(和子資料夾)中的配置檔案。有關使用者配置的更多詳細資訊,請參閱 概念 > 配置。來自步驟 1 的配置設定將合併到這些值之上,以形成 sails.config
物件。
接下來,Sails 將載入其他 Hook (鉤子)。核心 Hook (鉤子) 將首先載入,然後是用戶 Hook (鉤子) 和可安裝的 Hook (鉤子)。請注意,Hook (鉤子) 通常包含它們自己的配置,這些配置將用作 sails.config
中的預設值。例如,如果到目前為止沒有配置 port
設定,則將使用 http
Hook (鉤子) 的預設值 1337。
Sails 準備核心路由器,然後在 sails
物件上發出多個事件,通知 Hook (鉤子) 它們可以安全地綁定路由。
在所有 Hook (鉤子) 初始化之後,Sails 公開全域變數(預設情況下:sails
物件、模型、服務、_
和 async
)。
當以程式方式使用
sails.load()
時,此步驟不會運行。若要運行初始化步驟,請改用sails.lift()
。
sails.config.bootstrap
)sails.lift()
和 sails.load()
之間有什麼區別?lift()
=== load()
+ initialize()
。它執行 load()
所做的所有操作,此外,它還啟動任何附加的伺服器(例如 HTTP)並記錄一艘船的圖片。