2012-04-18 24 views
17

Actualmente estoy refabricando un código JavaScript que tenemos y, entre otras cosas, lo he cambiado para hacer uso del patrón revelador del módulo. El código se ve mucho más ordenado y funciona bien, pero ya no puedo ver las funciones en la vista de esquema. Veo el espacio de nombres de nivel superior var como una var pero no puede expandirlo para ver las funciones dentro.¿Cómo puedo ver el contorno en eclipse cuando uso el patrón revelador del módulo?

permite decir el código utilizado para tener este aspecto:

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

En este caso se ve ambas funciones en la vista de esquema. Pero si lo cambia a esto:

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

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

A continuación, la vista de esquema muestra simplemente la var de myNamespace. Intenté buscar pero no puedo encontrar una vista que realmente me muestre la jerarquía correctamente. ¿Alguien sabe de una manera de ver esto o es un caso de eclipse que no puede hacer esto?

+0

de Francois trabaja un convite. Es un poco complicado tener que confiar en un comentario, pero es la única solución que he visto. Me di cuenta de que si escribe un @memberof incorrecto, entonces el esquema de Eclipse va con el comentario en lugar del código, por lo que debe tener cuidado al usarlo. –

Respuesta

23

Añadir:

/** 
* @memberOf myNamespace 
*/ 

antes de cada definición de función para restaurar la jerarquía.

Usted encontrará etiquetas más interesantes para documentar su código aquí:
How I Introduced JsDoc into a JavaScript project – and found my Eclipse Outline

+1

Muchas gracias. Dos meses después y nadie más siquiera dio una sugerencia por lo que fue obviamente difícil de resolver. –

+4

Eso es lo que estoy buscando desde las edades :) – Chameleon

+1

Parece que no tiene ningún efecto (en absoluto) en mi PHP Neon con soporte JS predeterminado ... ¿Algo más que uno debería saber, habilitar, ...? – BurninLeo

5

una forma es llamar como abajo. Defínalo tal como es, pero no lo ejecutes por tu cuenta. Asegúrese de que el prototipo sea un objeto vacío y luego intente llamarlo. Funciona de la misma manera, pero restaurará el contorno y no es necesario que agregue comentarios al frente de cada función.

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

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

Es una respuesta justa, llegó un poco tarde. Vale la pena un voto positivo para un compañero novato sin embargo. –

2

No se muestra myFunc1() etc. en el esquema parece ser un error que está marcado como arreglado en 3.2. Sin embargo, no se soluciona en 4.2. Ciertamente, es un gran problema cuando se trata de archivos muy grandes de cientos de funciones, y solo aparece el nombre var en el esquema. Rezo para que se solucione.

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

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

/** * @memberOf MyNamespace */ no funcionó para mí. Cuando agrego esto arriba de myFunc1(), no lo muestra en el esquema, incluso si cierro y abro el archivo.

Curiosamente, 4 de mis 20 funciones aparecen en el esquema, pero no hay diferencia entre las que funcionan y las que no funcionan, excepto las que funcionan, todas tienen this.xxx (pero si agrego this.dummy; a las funciones invisibles no ayuda)

Esto semi trabaja: myNameSpace.prototype = {}; myNameSpace;

Pero entonces no puede llamar a sus funciones de este modo: myNameSpace.myFunc1();

+1

Sí, en Eclipse 5.X, o como sea Kepler, ninguno de los métodos sugeridos me funciona. JSDoc produce hermosas páginas HTML que describen el objeto/espacio de nombres autoinvocado, y Eclipse puede sugerir/autocompletar cuando ctrl + espacio, ¡pero se niega a delinear el objeto! :( –

0

Estoy trabajando con eclipse/Kepler. Usando el consejo de arriba, logré obtener la vista de esquema. Pero las propuestas (Ctrl-espacio) no funcionaron. Algunos fn eran visibles, otros no. Sin patrón para detectar

Después de leer http://usejsdoc.org/#JSDoc3_Tag_Dictionary He sustituido todos @memberOf por @memberof y ahora todo funciona como se espera ('hasta que surge el siguiente problema ...) respuesta

Cuestiones relacionadas