【问题标题】:Organize Cloud Functions for Firebase为 Firebase 组织云函数
【发布时间】:2017-08-14 23:37:55
【问题描述】:

组织所有 Cloud Functions for Firebase 的最佳做法是什么?

我从sample GitHub repository 看到所有函数都驻留在一个index.js 文件中。

我猜对于更大的项目,有一种更好的方法可以在不同的文件/目录中组织 Cloud Functions for Firebase。

【问题讨论】:

  • 这是一个见仁见智的问题,不太适合 Stack Overflow。但是,您应该知道可以使用 require() 函数将其他文件中的代码拉入 index.js。之后,组织就是你想要的。
  • 谢谢@DougStevenson,这回答了我的问题。
  • 在此处查看我的示例:stackoverflow.com/questions/42726310/… 它来自一个有点过时的 Cloud Functions 版本,但概念仍然有效。
  • 非常好的问题,我也在寻找如何在多个文件中拆分 firebase 功能,例如:单独文件中的登录功能和单独文件中的组创建子组创建功能等。我有一个非常大具有数百个功能的代码库

标签: firebase google-cloud-platform google-cloud-functions


【解决方案1】:

我在一个名为triggers 的文件夹中按提供者和资源组织我的事件处理程序。例如。其中auth 是提供者,user 是资源;文件夹functions/triggers/auth/user 包含一个onCreate.js 和onDelete.js,分别欢迎和清理用户。

+--/auth
|  +--/user
|     +--/onCreate.js
|     +--/onDelete.js
+--/database
+--/storage

您可以使用require 函数导出特定触发器:

exports.onCreateAuthUser = require('./triggers/auth/user/onCreate');    
exports.onDeleteAuthUser = require('./triggers/auth/user/onDelete');

我更进一步,创建了一个自动为我导出函数的脚本。我将文件的扩展名更改为f.js 并递归搜索触发器目录。对于找到的每个文件,通过分解目录和文件路径来炮制函数名称。

这个结构的灵感来自于检查 firebase-functions npm 包的内部结构。

【讨论】:

    【解决方案2】:

    这是一个很好的问题,也是我最近一直在寻找的问题。我从 Tarik Huber 那里找到了这个很棒的策略:Organizing your Firebase Cloud Functions。这是他对自己的想法和该领域的其他一些贡献者的看法。

    他根据函数的用途和类型(即触发器、Http 等)将函数组织到文件夹结构中。 index.js 代码遍历结构并以非常结构化和简洁的方式导入函数。它不仅允许开发人员以易于理解的结构简单地添加新函数,而且不必手动操作 index.js 文件,而且它还可以根据结构在 Firebase 中部署函数名称。

    一定要看看。

    【讨论】:

      【解决方案3】:

      您可以在 index.js 文件中使用 export { functionName } from './file' 之类的内容。

      /functions/index.js
      // This is the main entry point for the app written in ES that is compatible with node lts
      import * as functions from 'firebase-functions';
      
      export { sendWelcomeEmail } from './userEmails';
      
      exports.helloWorld = functions.https.onRequest((request, response) => {
        let helloMsg = `Hello!`;
        response.send(helloMsg);
      });
      

      【讨论】:

        【解决方案4】:

        我创建了一个脚本来将存在于名为 js 的文件夹中的所有 javascript 文件复制到 index.js 中,该文件夹位于 firebase 函数文件夹的根目录中。

        基本上,脚本只是自动复制文件,合并所有需要的文件后,就可以像往常一样部署功能了。

        你可以找到脚本here。

        注意:阅读所有其他帖子,我发现还有其他方法可以将函数组织在不同的文件中。我制作了这个脚本来解决我的问题,我现在正在我的一个项目中使用它。和大家分享一下,想想其他的技术是不是太复杂了,可以试试这个。

        链接:https://github.com/UnresolvedCold/firebase-merge

        【讨论】:

          猜你喜欢
          • 2019-08-28
          • 2020-11-25
          • 2019-01-15
          • 1970-01-01
          • 2019-01-18
          • 2020-06-28
          • 2017-07-31
          • 2019-10-17
          相关资源
          最近更新 更多