Подтвердить что ты не робот

Автоматическое сканирование для файлов конфигурации из ExtJS

Я создаю приложение ExtJS 6.2 с нуля. Я новичок в этой структуре, поэтому я мог бы использовать некоторую помощь при создании лесов.

В разработанном приложении должны быть отдельные "плагины", которые (на уровне кода/пакетов) будут полностью разделены. У нас также есть какой-то Маршрутизатор, который зарегистрирует некоторую информацию для имени имени (путь/контроллер/модель/дополнительная информация). Я бы хотел, чтобы она работала аналогично шаблону проектирования шаблонов. Когда я добавляю новый плагин/модуль, я также добавляю файл с определенным шаблоном имени - например. ModuleACMEGlobalConf. Я хочу, чтобы приложение ExtJS (или компонент/класс - независимо) каким-то образом сканировало все дерево классов для файлов с таким шаблоном имени, прочитало их содержимое, а затем разместило мою конфигурацию/глобальное пространство имен маршрутизатора.

И вопрос в том, что это лучший способ достичь этого?

UPDATE:

Структура Я хочу иметь:

MyAppFolder  
---Module1  
.....MyConfigGlobal1.js  
---Module2  
.....MyConfigGlobal2.js  
---  
---Router.js  -> I want this file to scan whole 'MyAppFolder' tree, find files with *ConfigGlobal*.js pattern, read them and store in global namespace  

MyConfigGlobal1.js

var config = { configProp1:  'test', configProp2:  'test2'}

MyConfigGlobal2.js

var config = {configProp3: 'test3', configProp4: 'test4'}

Router.js

var configsMap = EXT.SOMETHING.FIND.ME.CLASSES.FROM.TREE.WITH.NAME('*MyConfigGlobal*')

И я хочу, чтобы маршрутизатор загружал все (он может быть на уровне класса, а не на уровне файла) - будь то один класс или сто. И с этим решением мне не нужно менять Router.js когда-либо - просто добавьте еще один класс конфигурации в новом модуле, который я создаю. Поэтому нет необходимости повторять предыдущие модули.

Но если в Router есть что-то подобное:

var requiredConfigs = ['MyGlobalConfig1.js','MyGlobalConfig2.js']

И я собираюсь добавить третий файл/класс в этот список в Router, это означает, что политика сломана, и мне нужно повторно протестировать module1 и module2, потому что код, общий для них каким-то образом, был изменен.

4b9b3361

Ответ 1

Без грубой форсировки или вызова на бэкэнд вы не сможете. Это ограничение браузера.

Причина - безопасность. Потому что, если бы вы могли, тогда теоретически можно было бы использовать JavaScript для сканирования веб-сайтов и получения структур каталогов, возможно, просмотра или даже доступа к файлам без разрешения.

Лучший и, возможно, самый эффективный способ - написать метод, который сканирует ваш веб-каталог в вашем бэкэнд и доставляет список, как вы упомянули в своей идее requiredConfigs как объект JSON. Даже что-то вроде

<script type="text/javascript" source="configFiles.js"></script>

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