【问题标题】:How to include services from an npm module in Sails.js?如何在 Sails.js 中包含来自 npm 模块的服务?
【发布时间】:2015-07-22 10:01:45
【问题描述】:

我想将一些实用程序服务打包到一个节点模块中,以便包含在多个 Sails.js 项目中。

我知道 api\services\ 目录中包含的任何文件都会自动包含在全局范围内。

如何从节点模块中将服务包含在全局范围内,而不是位于服务文件夹中?

我也不想将它们与 grunt 联系起来或制作任何形式的副本。我实际上已经为我的项目禁用了 grunt。

【问题讨论】:

    标签: javascript node.js sails.js


    【解决方案1】:

    我建议你创建一个 Sails.js hook。您可以使用hook generator 生成基本挂钩。

    【讨论】:

      【解决方案2】:

      我倾向于简单地引用我的服务文件夹中的库。这是我用于一堆库的 utilService.js。

      api/services/utilService.js

      var changeCase = require("change-case"),
          moment = require("moment"),
          numeral = require("numeral");
      
      module.exports = {
          numeral : numeral, 
          moment : moment, 
          changeCase : changeCase
      }
      

      现在这些库中的每一个都被全局引用:

      utilService.numeral()
      utilService.moment()
      utilService.changeCase()
      

      【讨论】:

        【解决方案3】:

        你可以使用这个模块来制作你的钩子,它从用户钩子中加载自定义控制器、模型和服务 https://github.com/jaumard/sails-util-mcvsloader

        【讨论】:

        • 从 0.11.0 (changelog) 开始,现在可以直接从 NPM 安装用户挂钩。您能否详细说明 Sails.js 本身无法处理的解决方案提供的内容?
        • 是的,可以从 npm 安装钩子,但是如果您希望将模型/控制器/服务嵌入到钩子上怎么办?这就是sails-util-mcvsloader 模块所做的。你可以用这个把你自己的模型/控制器/服务放在多个帆项目上。如果你需要,它们可以在你的风帆项目中被覆盖。
        • sails-util-mcvsloader 可以用在可安装的钩子上,如果你想看,我在存储库中放了一个示例。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-26
        • 2015-06-11
        • 1970-01-01
        • 2019-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多