每個 Sails hook 都實作為一個 Javascript 函數,該函數接受單一參數——一個對正在運行的 sails
實例的引用——並返回一個物件,其中包含本文檔稍後描述的一個或多個鍵。最基本的 hook 看起來會像這樣
module.exports = function myBasicHook(sails) {
return {};
}
它不會做太多事情,但它可以運作!
每個 hook 都應保存在自己的資料夾中,檔案名稱為 index.js
。資料夾名稱應唯一識別 hook,並且資料夾可以包含任意數量的其他檔案和子資料夾。擴展先前的範例,如果您將包含 myBasicHook
的檔案以 index.js
的名稱保存在 Sails 專案的 api/hooks/my-basic-hook
資料夾中,然後使用 sails lift --verbose
啟動您的應用程式,您將在輸出中看到以下內容
verbose: my-basic-hook hook 載入成功。
以下功能可在您的 hook 中實作。所有功能都是可選的,並且可以透過將它們添加到您的 hook 函數返回的物件中來實作。
添加到主要 hook 函數返回的物件中的任何其他鍵都將在 sails.hooks[<hook name>]
物件中提供。這就是向終端使用者提供自訂 hook 功能的方式。您希望保持 hook 私有的任何資料和函數都可以添加在返回的物件之外
// File api/hooks/myhook/index.js
module.exports = function (sails) {
// This var will be private
var foo = 'bar';
return {
// This var will be public
abc: 123,
// This function will be public
sayHi: function (name) {
console.log(greet(name));
}
};
// This function will be private
function greet (name) {
return 'Hi, ' + name + '!';
}
};
上面的 public var 和 function 將分別以 sails.hooks.myhook.abc
和 sails.hooks.myhook.sayHi
的形式提供。