разрешение круговых зависимостей / JS - PullRequest
0 голосов
/ 20 октября 2018

У меня есть круговая зависимость между некоторыми файлами 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 .Но это кажется довольно упрощенным.На высоком уровне, какие еще существуют подходы, позволяющие избежать появления круговых углублений в вашем дизайне?

Спасибо!

1 Ответ

0 голосов
/ 21 октября 2018

Требуются дополнительные сведения, чтобы дать вам ответ о том, как решить ваши конкретные проблемы с зависимостями.Тем не менее, это хорошая стратегия, помогающая выявить проблему:

Закомментируйте все и медленно добавляйте функции обратно. Начните с функций, которые требуют наименьшего количества зависимостей, и переходите к тем, у которых больше зависимостей.,В конце концов все сломается.Если вы делали это постепенно, это должно помочь вам найти одну или несколько зависимостей, связанных с этой проблемой.

...