koala написав:Узагалі - по ситуації. Тут єдиної відповіді немає; але зазвичай якщо є сенс тримати статичні класи, то треба імпортувати всюди. Швидше за все немає. Детальніше без коду лише телепати можуть сказати.
Для навантаження, вочевидь, не треба імпортувати зайвого, а для стабільності - прямі руки.
І так, це не божества програмування, а лише характеристики, вони з маленьких літер пишуться.
Яка БД? Як кешуєте активні дані?
Щодо БД - Планую використати MongoDB
По кешуванню - важко дати відповідь відразу, оскільки наврядчи будуть дані які підлягатимуть кешуванню...
По коду:
Маю зараз такий фрагмент, але не знаю чи правильна реалізація цієї системи
index.mjs
let impDone = [];
for (let clsPath of fs.readdirSync(__dirname + "/screens", {
withFileTypes: true,
})) {
if (clsPath.isFile()) {
impDone.push(
import(path.join(__dirname, "screens", clsPath.name)).then((cls) => {
// console.log(cls);
return cls;
})
);
}
}
Promise.all(impDone)
.then((impo) => {
for (let cls of impo) {
if (cls.default) {
screens[cls.screenPath] = new cls.default();
}
}
})
.finally(() => {
bot.on("text", (ctx) => {
if (ctx.message.text.startsWith("!")) {
if (ctx.message.text.startsWith("!open ")) {
let screenPath = ctx.message.text.split(" ")[1];
if (screens[screenPath]) {
screens[screenPath].start(ctx);
}
}
}
});
});
screens/testScreen.mjs
export default class TestScreen {
constructor() {}
start(ctx) {
ctx.reply("Test message");
}
buttons(ctx) {}
onHandler(type, ctx) {}
}
export const screenPath = "test";
Просто цікава думка інших людей які можливо робили подібне