После многих дней неудачных экспериментов с jsDoc, похоже, что у документирования модулей require-js (AMD) есть свои проблемы. Для того, чтобы начать с:Как документировать требуемые модули AMD jsdoc?
Вы не можете пометить свой модуль как класс:
define([
"dcl/dcl",
], function (dcl) {
/**
* @class BaseClass
* See {@tutorial getting-started}
*/
var BaseClass = dcl(null,{
foo:function(a){}
});
return BaseClass;
});
JSDoc не будет выводить Foo на всех! Только путем изменения его на
/** @module BaseClass */
define([
"dcl/dcl",
], function (dcl) {
/**
* @class module:BaseClass
*/
var BaseClass = dcl(null,{
foo:function(a){}
});
return BaseClass;
});
будет перечислять функцию foo как функцию в документах. По крайней мере, что-то, но проблема не заканчивается, когда дело доходит до модулей. Если посмотреть на документацию jsdoc (довольно бедно), она рассматривает модули по-разному; особенно когда речь идет о постоянных и перечислениях (канальное состояние):
/** @module BaseClass */
define([
"dcl/dcl",
], function (dcl) {
/**
* @class module:BaseClass
*/
var BaseClass = dcl(null,{
/**
*
* @constant {String} module:BaseClass.COLLAPSED
* @static
* @member
* @name module:BaseClass.COLLAPSED
* */
COLLAPSED : '__wcDockerCollapsedPanel',
/**
* Add a new docked panel to the docker instance.<br>
* <b>Note:</b> It is best to use {@link wcDocker.COLLAPSED} after you have added your other docked panels, as it may ensure proper placement.
* @param {module:BaseClass.COLLAPSED} [targetPanel] - A target panel to dock relative to, or use {@link wcDocker.BaseClass} to collapse it to the side or bottom.
* @returns {wcPanel|Boolean} - The newly created panel object, or false if no panel was created.
*/
addPanel: function (targetPaneloptions) {}
});
return BaseClass;
});
только путем добавления ВЕЗДЕ модуль: префикс, ваши постоянные и перечислений стать канальным состоянием. Это выглядит довольно плохо в документации. Кроме того, я не могу определить константы и перечисления в другом модуле и ссылку на них, memberOf тоже не помогает.
Итак, вопрос в том, как использовать jsDoc с модулями AMD/Require-JS или как я могу заставить jsDoc рассматривать модули AMD (созданные var module = ...) в качестве классов?
ps: возможно ли, что это просто багги или не работает? Потому что я действительно пробовал всевозможные теги и комбинации, но нет ... Ничто действительно не работает, как описано в документах.
Во всяком случае, любая мысль или ссылки на примеры приветствуются. г