У меня есть круговая зависимость между некоторыми файлами JS и шагами, которые нужно решить.
Q1: перемещает require
решение ОК?
Один из способов заставить код работать - просто переместить оператор require()
внутри функции, например:
static getTokens(qo) {
const FaqModel = require('../FaqModel')
// do stuff with FaqModel is OK now
Значит ли это, что require будет выполняться при каждом вызове метода getTokens()
?Мне кажется противнымИли этот обходной путь является достаточно хорошим решением?
Метод обнаружения Q2
Это не простой случай A req B и B req A. Где-то существует цикл между несколькими файлами.В прошлый раз, когда я искал инструменты для обнаружения зависимости, я не дал четких ответов, поэтому удивляюсь, как лучшие люди отследят это?
Стратегия рефакторинга Q3
Я планирую провести рефакторинг из FaqModel
все, что нужно для третьего файла, и просто требуется, чтобы в каждом случае, когда вызывались циклические задержки, например, запросы выполнялись только в одном направлении.Если возможно, иметь иерархию файлов, поэтому вам нужно всего лишь down , а не up .Но это кажется довольно упрощенным.На высоком уровне, какие еще существуют подходы, позволяющие избежать появления круговых углублений в вашем дизайне?
Спасибо!