2012-04-18 13 views
17

Attualmente sto refactoring del codice Javascript che abbiamo e, tra le altre cose, l'ho modificato per utilizzare il modello del modulo rivelatore. Il codice è molto più ordinato e funziona bene ma non vedo più le funzioni nella vista struttura. Vedo il namespace di primo livello var come var ma non è possibile espanderlo per vedere le funzioni all'interno.Come posso visualizzare il contorno in eclissi quando si utilizza il modello del modulo rivelatore?

Diciamo che il codice utilizzato per assomigliare a questo:

function myFunc1() {} 
function myFunc2() {} 

In questo caso si vede entrambe le funzioni nella vista struttura. Ma se lo cambi a questo:

var myNamespace = function() 
{ 
    function myFunc1() {} 
    function myFunc2() {} 

    return { 
    name: "myNamespace", 
    myFunc1: myFunc1, 
    myFunc2: myFunc2 
    } 
}(); 

Quindi la vista struttura mostra solo il mio spazio dei nomi var. Ho provato a cercare ma non riesco a trovare una vista che mi mostrerà correttamente la gerarchia. Qualcuno sa di un modo per vederlo o è un caso di eclissi non essere in grado di farlo?

+0

Francois delle funziona a meraviglia. È un po 'di malumore dover fare affidamento su un commento, ma è l'unica soluzione che ho visto. Ho notato che se si digita un @memberof errato, il contorno di Eclipse segue il commento anziché il codice, quindi è necessario fare attenzione quando lo si utilizza. –

risposta

23

Add:

/** 
* @memberOf myNamespace 
*/ 

prima di ogni definizione di funzione per ripristinare la gerarchia.

Troverete i tag più interessanti per documentare il codice qui:
How I Introduced JsDoc into a JavaScript project – and found my Eclipse Outline

+1

Mille grazie. Due mesi più tardi e nessun altro ha mai dato un suggerimento quindi era ovviamente difficile da risolvere. –

+4

Questo è quello che sto cercando da secoli :) – Chameleon

+1

Sembra che non abbia alcun effetto (affatto) nel mio PHP Neon con supporto JS predefinito ... Qualcos'altro che si dovrebbe conoscere, abilitare, ...? – BurninLeo

5

un modo è quello di chiamare come qui sotto. Definirlo com'è, ma non eseguirlo autonomamente. Assicurarsi che il prototipo sia un oggetto vuoto e quindi provare a chiamarlo. Funziona allo stesso modo, ma ripristinerà il contorno e non è necessario aggiungere commenti davanti a ogni funzione.

var myNamespace = (function() 
{ 
    function myFunc1() {} 
    function myFunc2() {} 

    return { 
    name: "myNamespace", 
    myFunc1: myFunc1, 
    myFunc2: myFunc2 
    } 
}); 
myNamespace.prototype = {}; 
myNamespace(); 
+0

È una risposta giusta, è appena arrivato un po 'tardi. Vale comunque la pena per un compagno di noob. –

2

Non mostrando MyFunc1(), ecc nello schema sembra essere un bug che è contrassegnato come fissato in 3.2. Tuttavia non è stato risolto in 4.2. È certamente un enorme problema quando si gestiscono file molto grandi con centinaia di funzioni e solo il nome var compare nella struttura. Prego per essere corretto.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=236202

https://bugs.eclipse.org/bugs/show_bug.cgi?id=281374#c1

/** * @memberOf MyNamespace */ non ha funzionato per me. Quando aggiungo questo sopra myFunc1(), non lo mostra nella struttura, anche se chiudo e apro il file.

È interessante notare che 4 delle mie 20 o più funzioni si presentano nella struttura, ma non c'è differenza tra quelle che funzionano e quelle che non eccetto quelle che funzionano tutte hanno questo.xxx in esse (ma se aggiungo this.dummy; per funzioni invisibili non aiuta)

Questo semi funziona: myNameSpace.prototype = {}; myNameSpace;

Tuttavia, non è possibile richiamare le sue funzioni in questo modo: myNameSpace.myFunc1();

+1

Sì, in Eclipse 5.X, o qualunque sia Kepler, nessuno dei due metodi suggeriti funziona per me. JSDoc produce bellissime pagine HTML che descrivono l'oggetto/spazio dei nomi auto-invocato, e Eclipse può suggerire/completare automaticamente quando si ctrl + spazio, ma si rifiuta di delineare l'oggetto! :( –

0

Sto lavorando con eclipse/Kepler. Usando il consiglio di cui sopra sono riuscito a ottenere la vista generale. Ma le proposte (Ctrl-spazio) non hanno funzionato. Alcuni fn erano visibili, altri no. Nessun modello da rilevare.

Dopo aver letto http://usejsdoc.org/#JSDoc3_Tag_Dictionary ho sostituito tutti @memberOf da @memberof e ora tutto funziona come previsto ('til il prossimo problema si pone ...) risposta

Problemi correlati