Как я могу просмотреть контур в затмении при использовании выявляющего шаблона модуля?
В настоящее время я занимаюсь рефакторингом некоторого кода Javascript, который у нас есть, и среди прочего я изменил его, чтобы использовать шаблон раскрывающегося модуля. Код выглядит намного аккуратнее и работает нормально, но я больше не вижу функций в виде структуры. Я вижу пространство имен верхнего уровня var как var, но вы не можете расширить его, чтобы увидеть функции внутри.
Скажем, код, который выглядел так:
function myFunc1() {}
function myFunc2() {}
В этом случае вы видите обе функции в виде структуры. Но если вы измените это на это:
var myNamespace = function()
{
function myFunc1() {}
function myFunc2() {}
return {
name: "myNamespace",
myFunc1: myFunc1,
myFunc2: myFunc2
}
}();
Тогда представление схемы просто показывает вам myNamespace var. Я пытался искать, но не могу найти представление, которое действительно покажет мне иерархию правильно. Кто-нибудь знает способ просмотра этого или это случай затмения, не способного сделать это?
4 ответа
Добавлять:
/**
* @memberOf myNamespace
*/
перед каждым определением функции восстановить иерархию.
Вы найдете больше интересных тегов для документирования вашего кода здесь:
Как я ввел JsDoc в проект JavaScript - и нашел свой Eclipse Outline
Один из способов - назвать это, как показано ниже. Определите это как есть, но не выполняйте его самостоятельно. Убедитесь, что прототип является пустым объектом, а затем попробуйте вызвать его. Он работает так же, но восстановит контур, и вам не нужно добавлять комментарии перед каждой функцией.
var myNamespace = (function()
{
function myFunc1() {}
function myFunc2() {}
return {
name: "myNamespace",
myFunc1: myFunc1,
myFunc2: myFunc2
}
});
myNamespace.prototype = {};
myNamespace();
Не показывать myFunc1() и т. Д. В общих чертах, это ошибка, которая помечена как исправленная в 3.2. Однако это не исправлено в 4.2. Это, безусловно, огромная боль при работе с очень большими файлами сотен функций, и в схеме отображается только имя переменной. Я молюсь, чтобы это было исправлено.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=236202
https://bugs.eclipse.org/bugs/show_bug.cgi?id=281374
/** * @memberOf myNamespace */ У меня не сработало. Когда я добавляю это выше myFunc1(), он не отображается в общих чертах, даже если я закрываю и открываю файл.
Интересно, что 4 из моих 20 или около того функций отображаются в общих чертах, но нет разницы между теми, которые работают, и теми, которые не работают, за исключением тех, которые работают все, имеют this.xxx в них (но если я добавлю это.dummy; невидимым функциям это не поможет)
Это полуработы: myNameSpace.prototype = {}; myNameSpace;
Но тогда вы не можете вызывать его функции таким образом: myNameSpace.myFunc1();
Я работаю с Eclipse/Kepler. Используя совет сверху, мне удалось получить общий вид. Но предложения (Ctrl-пробел) не сработали. Некоторые fn были видны, некоторые нет. Нет шаблона для обнаружения.
После прочтения http://usejsdoc.org/ я заменил все @memberOf на @memberof, и теперь все работает как положено (пока не возникнет следующая проблема...)