每个 Sails 钩子都实现为一个 JavaScript 函数,该函数接受一个参数——对正在运行的 sails
实例的引用——并返回一个对象,该对象包含一个或多个稍后在本文件中描述的键。最基本的钩子看起来像这样
module.exports = function myBasicHook(sails) {
return {};
}
它不会做太多事情,但它会工作!
每个钩子都应保存在其自己的文件夹中,文件名应为 index.js
。文件夹名称应唯一标识钩子,并且该文件夹可以包含任意数量的其他文件和子文件夹。扩展前面的示例,如果您将包含 myBasicHook
的文件保存在 Sails 项目中的 api/hooks/my-basic-hook
文件夹中的 index.js
中,然后使用 sails lift --verbose
启动您的应用程序,您将在输出中看到以下内容
verbose: my-basic-hook 钩子加载成功。
以下功能可用于在您的钩子中实现。所有功能都是可选的,可以通过将它们添加到钩子函数返回的对象中来实现。
添加到主钩子函数返回的对象中的任何其他键都将在 sails.hooks[<hook name>]
对象中提供。这就是向最终用户提供自定义钩子功能的方式。您希望对钩子保持私有的任何数据和函数都可以在返回的对象外部添加
// 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 + '!';
}
};
上面的公共变量和函数将分别作为 sails.hooks.myhook.abc
和 sails.hooks.myhook.sayHi
使用。