(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);
我有一个 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);