Grazie alla risposta trovato qui:metodi nidificati in barra laterale di JSDoc
https://stackoverflow.com/a/19336366/592495
documentazione mio JavaScript è ben organizzato e ben formattato-. Ogni spazio dei nomi è un "genitore" dei metodi contenuti all'interno. Tuttavia, la navigazione non è così dettagliata come vorrei.
Dopo la compilazione/rendering utilizzando lo strumento node.js tramite un semplice comando (jsdoc file1.js file2.js
), i documenti vengono generati in un modello predefinito. Questo modello predefinito visualizza i miei spazi dei nomi nella barra laterale di navigazione, ma NON mostra i metodi che ciascuno contiene.
È possibile simulare un elenco di metodi aggiungendo la direttiva @class
a ciascun metodo, ma come sappiamo, non sono realmente classi.
Mi piacerebbe vedere una barra laterale di navigazione come questa:
My Project
- namespace 1
- method.a
- method.b
- method.c
-namespace 2
- method.d
- method.e
qualsiasi direzione per la documentazione ho trascurato sarebbe molto apprezzato.
[Modifica per aggiungere:]
Al momento la sperimentazione, @class
fa quasi esattamente quello che voglio, ma con alcune eccezioni:
elenca le classi sopra namespace. Non mi piace perché gli spazi dei nomi sono i "genitori" per così dire.
JavaScript non ha classi in questo senso. Non quelli che sono chiamati "classi" con quella nomenclatura. Crea una strana disconnessione durante la lettura del documento per visualizzare un elenco di "classi".
Aggiunge automaticamente il "nuovo" operatore. Non tutti i metodi hanno costruttori ... puoi vedere il problema!
[edit: codice di esempio]
Quindi, ecco l'attuale struttura. Prima di annotare con commenti JSDoc, ecco l'approccio di base:
var app = app || {};
app.utils = {
whizbang: function() {},
geegolly: function() {}
};
app.render = {
thestuff: function(params) {},
thethings: function(params) {}
}
}
Quindi, utilizzando oggetto la notazione letterale, il livello superiore è un "namespace" per l'intera applicazione, ma all'interno ci sono sotto-namespace per scopi diversi . Qui, ho uno spazio secondario specifico per le utilità e un altro specifico per il rendering. Ognuno può avere proprietà, ma, soprattutto, contengono ciascuna funzioni. Sono queste funzioni che dovrebbero apparire nella barra laterale. Ora per la carne fuori con il mio attuale modello per JSDoc:
/**
* @file MyApp.js This is an awesome description of MyApp.js
*
* @version 0.1
* @author Greg Pettit
* @copyright 2015
*
*/
/**
* Description of my main namespace!
*
* @namespace app
*/
var app = app || {};
/**
* This is a description of my sweet utilities namespace!
*
* @memberof app
* @type {object}
* @namespace app.utils
*/
app.utils = {
/**
* app.utils.whizbang is an awesome function with magical powers. I sure wish
* it would appear in the sidebar as a member of app.utils!
*
* @memberof app.utils
* @method whizbang
*
* @param {method} [successCallback] Method invoked on successful attempt.
* @param {method} [errorCallback] Method invoked on unsuccessful attempt.
*
*/
whizbang: function(successCallback, errorCallback) { // do utility stuff! }
}
/**
* This is a description of the best rendering namespace ever.
*
* @memberof app
* @type {object}
* @namespace app.render
*/
app.render = {
/**
* app.render.thethings renders the things! I wish it would render to the sidebar...
*
* @memberof app.render
* @method thethings
*
* @param {method} node The node to which thethings are rendered
*
*/
thethings: function(node) { // do rendering stuff! }
}
Se qualche utente JSDoc hardcore ci pensa, "Sì. Questo non può essere fatto, non l'ho mai visto comunque", apprezzerei ancora un commento! –
E il tag '@ namespace' o' @ module'? – n00dl3
@JuniusRendel, grazie per il commento! Sto usando '@namespace' in tutto, ma le funzioni non vogliono essere aggiunte ad esso, perché JSDoc vuole ancora essere JavaDoc e cercare le classi. '@ module' Onestamente non ho indagato troppo a fondo perché sembrava aspettarsi le esportazioni e così via. –