2012-04-16 15 views
8

Dopo aver esaminato la definizione di modulo asincrono (AMD) nel contesto javascript mi ​​chiedevo come ottenere intellisense in Visual Studio 2010 per un modulo dipendente.Moduli AMD Javascript: come ottenere Intellisense Visual Studio attraverso i moduli

Ad esempio dato modulo A:

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

e un corrispondente modulo B:

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

Poi vorrebbe avere Intellisense completo per il modulo A (rappresentato come parametro a) entro modulo B. Si noti che entrambi questi moduli saranno definiti in file separati (A.js e B.js in questo caso).

+0

Ho postato un bug per Visual Studio per un problema simile: https://connect.microsoft.com/VisualStudio/feedback/details/2825862 (Non ho capito il mio login quando ho postato però). Se condizioni simili risolvono il problema, si prega di commentare il problema. – beruic

risposta

2

Sembra che l'autore del RequireJS sta lavorando al supporto Intellisense qui: https://github.com/jrburke/requirejs-intellisense

Purtroppo non ho ottenuto la "magia" di lavorare ancora.

Aggiornamento: ho fatto arrivare a questo lavoro in determinati scenari. In particolare funziona alla grande quando tutti i file js si trovano nella stessa cartella.

+0

Cosa hai fatto per farlo funzionare? – Charles

+0

Ho inserito tutti i file javascript nella stessa cartella e "referenced" require.js (trascina il file sull'editor per ottenere un commento di riferimento). Ho scoperto che in genere sono necessari alcuni secondi per iniziare a lavorare. L'ho fatto funzionare per alcune altre strutture di cartelle ma sembrava piuttosto limitato. Inoltre penso che funzioni solo per richiedere chiamate (non definite). – dcstraw

+0

Ottengo le funzioni define e require (ad esempio 'require' compare in intellisense all'interno della definizione di modulo predefinita). Tuttavia non posso ottenere intellisense per test o persona, cioè il 'test'. non elenca il numeroProperty e childObject. Questo è ciò che intendevo per "pieno" intellisense. – Charles

5

Questo commento qui mi ha aiutato a farlo funzionare in parte: Comment on GitHub Repo

Fondamentalmente, ho dovuto fare in modo che questo:

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

è nella parte superiore del file _references.js. Funziona in blocchi 'require' e 'define', ma non sembra funzionare all'interno di funzioni anonime all'interno di blocchi 'define'.

Problemi correlati