sayesinde tespit edildi:İçiçe Yöntemleri cevaba
https://stackoverflow.com/a/19336366/592495
Benim JavaScript belgelerine iyi organize ve iyi biçimlendirilmiş olduğunu. Her ad alanı, içinde yer alan yöntemlerin "üst öğesi" dir. Ancak, navigasyon istediğim kadar ayrıntılı değildir.
node.js aracını kullanarak basit bir komut (jsdoc file1.js file2.js
) kullanarak derledikten/oluşturduktan sonra, dokümanlar varsayılan bir şablona oluşturulur. Bu varsayılan şablon, kenar boşluklarımdaki yön alanlarını görüntüler, ancak her birinin içerdiği yöntemleri göstermez.
yapabilirsiniz sahte her yönteme @class
direktifini ekleyerek, ama bildiğimiz gibi, gerçekten sınıflar değildir tarafından yöntemlerinin listesi.
Böyle bir kenar çubuğu navigasyon görmek isterdim:
My Project
- namespace 1
- method.a
- method.b
- method.c
-namespace 2
- method.d
- method.e
ben büyük takdir gözardı belgelere Herhangi yönü.
[değiştir eklemek için:] deney üzerine
, @class
neredeyse tam ne istiyorum ama bazı istisnalar dışında kapsamaz:
Bu ad yukarıdaki sınıflar listeler. İsim alanlarının "ebeveyn" olduğu için bundan hoşlanmıyorum.
JavaScript'in bu anlamda sınıfları yok. Bu isimlendirmeyle "sınıflar" olarak adlandırılanlar değil. "Sınıflar" listesini görmek için belgeyi okurken garip bir kopukluk oluşturur.
"Yeni" operatörü otomatik olarak ekler. Tüm yöntemlerin kurucuları yok ... sorunu görebiliyorsunuz!
[değiştir: örnek kod]
Yani burada mevcut yapımız var. Ben JSDoc yorumlarla kendi açıklamalarını önce burada temel yaklaşım var:
var app = app || {};
app.utils = {
whizbang: function() {},
geegolly: function() {}
};
app.render = {
thestuff: function(params) {},
thethings: function(params) {}
}
}
Yani, nesne değişmezi gösterimi kullanarak, üst seviye, bütün uygulama için "ad", ancak farklı amaçlar için alt ad vardır içinde . Burada, yardımcı programlara özgü bir alt isim-alanı ve işleme için özel bir tane var. Her birinin özellikleri olabilir, ancak daha önemlisi her biri işlevleri içerir. Kenar çubuğunda görünmesi gereken bu işlevlerdir. Şimdi JSDoc için benim şimdiki desenle eti dışarı:
/**
* @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! }
}
Herhangi bir hardcore JSDoc kullanıcısı var, "Evet. Bu yapamazsınız. Ben hiç bir şekilde görmedim," Ben hala bir yorum takdir ediyorum! –
'@ namespace' veya' @ module' etiketi nedir? – n00dl3
@JuniusRendel, yorum için teşekkürler! Boyunca '@ namespace' kullanıyorum, ancak fonksiyonlar ona eklenmesini istemiyor çünkü JSDoc hala JavaDoc olmak istiyor ve sınıfları arıyor. '@ module' Dürüst bir şekilde ihracat ve benzeri göründüğü için çok fazla araştırılmamıştım. –