require.js
устанавливает способ определения объектов внутри модулей с define([requiremens], object)
как лучший способ.
Таким образом, каждая страница или другой файл js будет require()
вызывать и получать модули в качестве параметров.
Это работает довольно хорошо, каждая функция / модуль имеет собственное пространство имен.
Проблема в том, что у меня есть:
// AJAX/Requests.js
define(['UI/Message'],function(Message){
var Requests={
checkResponse:function(response){
//1==ok
//0==error
//2==good message
//3==good message, but still stop
if(response.status==1){
return true;
}
else if(response.status==2){
Message.good(response.message);
return true;
}
else if(response.status==3){
Message.good(response.message);
return false;
}
else{
Message.bad(response.message);
return false;
}
}
};
return Requests;
});
Теперь пользовательский интерфейс / сообщение определены таким же образом, и он возвращает объект.
Но когда я редактирую файл с запросами, я не могу перемещаться по коду, поэтому, если я хочу отредактировать объект сообщения, единственный способ - это самому открыть файл и найти нужную мне функцию, вместо того, чтобы иметь IDE прыгать там для меня.
Есть ли какой-нибудь обходной путь для pycharm специально или для совместного использования require.js для решения этой проблемы? Когда у вас много кода, для навигации становится беспорядком, поэтому я в первую очередь использую IDE!
И что еще хуже: редактор никогда не знает, какие функции есть у объектов!
Единственное возможное решение, которое я вижу, состоит в том, чтобы не использовать вложенные пространства имен и объявлять глобальную переменную перед вызовом define()
, но в этом случае все объекты должны вызываться как UI_Message, AJAX_Requests. Чтобы быть уверенным, что у меня нет какого-то Послания в двух разных местах ...
И я не уверен, что оптимизатор require.js будет использовать это правильно. Документация Require.js очень ясна, чтобы держаться подальше от глобальных переменных.