(Node.js) 将 JS class 拆分为模块

(Node.js) Splitting JS class into modules

我有一个 class“Firebase”,我在其中编写了服务器端使用的所有功能(涉及此服务)。

起初,代码非常干净清晰,因为这个 class 中没有很多功能。现在,class 是超级巨人(超过 100 个功能不是很短)。这就是为什么我决定将 class 分成模块(可能不正确)以提高项目的清晰度和组织。

像这样:

/* eslint-disable no-empty */
const functions = require("firebase-functions");
const admin = require("firebase-admin");

// Lazy initialization of the admin SDK
try {
     const googleCloudServiceAccount = require("../../utils/json/googleCloudServiceAccount.json");
     admin.initializeApp({
       credential: admin.credential.cert(googleCloudServiceAccount),
       databaseURL: URL,
       storageBucket: BUCKET,
     });
} catch (e) {}

class Firebase {
  constructor() {
    Object.assign(this, {
      auth: admin.auth(),
      firestore: admin.firestore(),
      storage: admin.storage(),
    });
  }
}

Object.assign(Firebase.prototype, {
  /* Methods */
});

module.exports = Firebase;

我的想法是在“firebase-auth.js”、“firebase-storage.js”、“firebase-firestore.js”等模块中组织代码...最后,需要所有模块方法(或更好的东西,因为它可能是一个很长的导入列表)并将它们分配给我的 Firebase class 原型。

我的问题是:如果在模块的方法中我需要使用 Firebase.firestore、Firebase.auth...(它们是 Firebase class 的成员),我应该在每个模块中创建 class 的实例?

有什么想法吗? 谢谢。

试试这个,不是最好的,但可以正常工作

在导出模块中创建一个包含函数的文件,例如:

module.exports = function (app, dbConnection, firebase) {
       exampleFirebaseFunction(){
       }
}

在您的主文件中,您将其命名为:

require('./routes/firebase-routes.js')(app, dbConnection, firebase);