Мое в настоящее время работающее решение состоит в том, чтобы использовать дополнительный файл сценария "package", который затем инкапсулирует все классы.
Да, это лучшая практика.Файл сценария «package» обычно называется index.js
и помещается в каталог пакета, так как именно к этому разрешается путь к папке при импорте.
импорт этого сценария в каждый новый класс
Нет, вы не должны этого делать.Это вводит круговую зависимость.Пока ваш модуль не зависит от других классов, он не должен ничего импортировать.Здесь нет «объявления пакета», модуль представляет собой автономный файл со своими собственными зависимостями.
Обратите внимание, что вы не должны экспортировать свой класс дважды из модуля, достаточно экспорта по умолчанию.Таким образом, вы будете использовать
// mypackage/classA.js:
export default class ClassA {
/* some Class Code */
}
// mypackage/index.js:
export { default as ClassA } from "./classA.js";
export { default as ClassB } from "./classB.js";
// your solution of importing, then exporting works as well.
// script.js:
import * as MyPackage from "./mypackage";
const a = new MyPackage.ClassA();
// or
import { ClassA } from "./mypackage";
const a = new ClassA();