2012-04-16 15 views
8

Después de examinar la definición de módulo asíncrono (AMD) en el contexto javascript me preguntaba cómo obtener intellisense en Visual Studio 2010 para un módulo dependiente.Javascript AMD Modules: Cómo obtener Visual Studio intellisense en los módulos

Por ejemplo dado módulo A:

define(function() { 
    return { 
     square: function(value) { 
      return value * value; 
     } 
    }; 
}); 

y un módulo correspondiente B:

define(["A"], function(a) { 
    return { 
     value: a.square(10) 
    } 
}); 

entonces me gustaría tener pleno intellisense para el módulo de A (representados como parámetro a) dentro del módulo B. Tenga en cuenta que ambos módulos se definirán en archivos separados (A.js y B.js en este caso).

+0

He publicado un error para Visual Studio para un problema similar: https://connect.microsoft.com/VisualStudio/feedback/details/2825862 (aunque no entendí mi nombre de usuario cuando publiqué). Si condiciones similares solucionan su problema, coméntelo. – beruic

Respuesta

2

Parece que el autor de RequireJS está trabajando en el apoyo Intellisense aquí: https://github.com/jrburke/requirejs-intellisense

Por desgracia, no han conseguido la "mágica" para trabajar todavía.

Actualización: Lo hice funcionar en ciertos escenarios. En particular, funciona muy bien cuando todos los archivos js están en la misma carpeta.

+0

¿Qué hiciste para que funcione? – Charles

+0

Puse todos los archivos javascript en la misma carpeta y "reference" require.js (arrastre el archivo al editor para obtener un comentario de referencia). Descubrí que generalmente toma unos segundos comenzar a trabajar. Lo hice funcionar para algunas otras estructuras de carpetas, pero parecía bastante limitado. También creo que solo funciona para requerir llamadas (no define). – dcstraw

+0

Obtengo las funciones definir y requerir (es decir, 'require' aparece en intellisense dentro de la definición predeterminada del módulo). Sin embargo, no puedo obtener intellisense para la prueba o persona, es decir, la 'prueba'. no enumera el número Propiedad y childObject. Esto es lo que quise decir con intellisense 'completo'. – Charles

5

Este comentario aquí me ayudó a conseguir que funcione parcialmente: Comment on GitHub Repo

Básicamente, tenía que asegurarse de que esto:

/// <reference path="require.js" /> 

es en la parte superior del archivo _references.js. Funciona en bloques 'require' y 'define', pero no parece funcionar dentro de funciones anónimas dentro de bloques 'define'.

Cuestiones relacionadas