Sail.js官方文档阅读笔记(三)——api/helpers/ 目录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuqingdeqing/article/details/84769935

在1.0版本中,Sails推出了helper的内置支持,它是简单的公用资源,可以用来共享Node代码。它可以减少重复,提高开发效率。和actions2一样,它也可以使应用更容易生成文档。helper目录位置如下所示:

3.1 总述

Sails中helper用来将重复的代码抽象到单独的文件中,从而在其他各种地方进行复用。当代码增多时,它能提升可维护性。

3.2 helper定义

一个例子:

// api/helpers/format-welcome-message.js
module.exports = {

  friendlyName: 'Format welcome message',


  description: 'Return a personalized greeting based on the provided name.',


  inputs: {

    name: {
      type: 'string',
      example: 'Ami',
      description: 'The name of the person to greet.',
      required: true
    }

  },


  fn: async function (inputs, exits) {
    var result = `Hello, ${inputs.name}!`;
    return exits.success(result);
  }

};

以上例子展示了一个好的helper应有的一些特性:它以一种友好的命名和描述开始,可以立即明白它的作用,它描述了它的输入使之很容易明白它的作用,它可以以一种最容易的方式实现了一些离散任务。

3.2.1 fn函数

helper的核心就是fn函数,它包含了helper实际会运行的代码。这个方法包括两个参数:inputs和exits。此函数的工作就是使用和处理这些参数,然后触发一个exit返回到调用helper的代码中。就像一个典型的JS函数用return将结果返回调用者,helper是通过把它传到exit.success()。

3.2.1.1 inputs

helper定义的inputs类似典型js函数的参数:它们定义了代码必须使用的参数。然而,inputs有自动验证的能力。如果helper被错误的类型的inputs调用,会引发错误。因此,它们具有自我验证的能力。

helper的input定义在inputs的字典中,每个input包含至少一种类型属性。它支持的类型有:string, boolean, number, ref(js变量引用,可以是任意值,包括字典、数组、函数、流等)。

3.2.1.2 Exits

Exits描述的是helper的各类输出,或好或坏。当调用helper时,如果它的fn成功了,则其会正常返回,否则就会报错。

有必要的时候,也可以暴露出其他定制的出口,允许用户层代码调用helper去处理一些特殊的、异常的用例。这样可以保证代码的透明性和可维护性通过让它更容易声明和传递错误。

fn负责触发它的接口,或者抛出一个特殊的出口标志,或者唤起出口回调。如果helper通过一个成功出口返回一个结果,那这就是helper的返回值。

3.2.2 同步helpers

默认所有的helpers都是异步的。然而这只是一个安全的假设,并不总是成立,为了优化性能,可以通过设定sync:true。

当你了解你helper中所有的fn都是绝对同步时,你可以设定更高级的同步属性为true,它允许用户层调用helper无需等待。

3.3 调用helper

当Sails应用加载时,它会找到api/helpers下的所有文件,将它们都编译成方法,以驼峰命名法把它们都保存在sails.helpers字典里。任何helper都可以被调用,只有使用await调用,并提供一些参数。

3.3.1 同步使用

如果一个helper声明为同步,则可以不用使用await。

猜你喜欢

转载自blog.csdn.net/wuqingdeqing/article/details/84769935