const { config } = require("./file").Default
export { config }
// Опять же, я иногда позволяю себе переопределять export, для того чтобы не получать по итогу подобный объект
// Структура примерна такова при котором подобное получается
config
Default.ts
index.ts // Где индекс собирает все конфиги
{
default: {
default: {
server = {
path: require.main.path,
}
}
}
}
// Подобное решается переопределением export
export = Default
// Плюсы модуля
require("./file").init()
require("./file").Default // Зайти в объект и после использовать деструктуризацию для нужной переменной
require.main.path // Отдаёт относительный путь (его можно использовать, но опять же что это такое я везде пишу import, а тут появился require)
// Минусы экспорта
export {} // Экспорт без объекта не работает
export default init // Экспортирует в объект default
// Для того, чтобы использовать экспорт без объекта нужно переопределять export
export = init // Но чем это закончится, переопределение export, думаю ничем хорошим
// О какой архитектуре приложения может идти речь, когда идёт речь о том, что удобней и с чем удобнее работать.
// Да даже если и о архитектуре (чем меньше кода и чем он понятней, тем лучше)
require("./file").init() // Намного лучше выглядит
import file from "./file" // Чем это
file.init()
{
"compilerOptions": {
"target": "ES6",
"module": "CommonJS",
"moduleResolution": "Node",
"outDir": "dist"
}
}
То я могу использовать и require с export {}