0

У меня есть функции1.js, functions2.js и functions3.js. Каждый из них имеет функцию funcA, funcB и funcC соответственно. Я создал файл под названием «functions.intellisense.js» и добавил его в _reference.js. Затем я добавил ссылку на _reference.js в файле test.js.файл с одним intellisense для нескольких файлов функций js?

Почему не работает intellisense?

functions.intellisense.js

intellisense.annotate(funcA, function() { 
    /// <signature> 
    /// <summary>Function A</summary> 
    /// </signature> 
}); 

intellisense.annotate(funcC, function() { 
    /// <signature> 
    /// <summary>Function A</summary> 
    /// <param name="message">message</param> 
    /// </signature> 
}); 

_reference.js

/// <reference path="functions.intellisense.js" /> 

functions1.js

function funcA() { 
    alert("this is function A"); 
} 

functions3.js

function funcC(message) { 
    alert("this is function C " + mesage); 
} 

test.js

/// <reference path="Scripts/_reference.js" /> 
func //<--- expecting this to show intellisense 

Возможно ли это сделать? Я хотел бы сделать это по нескольким причинам, в первую очередь всего , объединяя документацию. Во-вторых, я хотел бы иметь возможность предварительно документировать функции. Возможно, добавьте идеи с помощью «TODO», так что, если я не написал функцию Test.Add(), я все равно мог бы поместить ее в файл intellisense, и она выведет «TODO: добавляет тест».

+0

Hi Scott - можете ли вы вставить содержимое своего файла _references.js? - Jordan, Microsoft Visual Studio PM –

+0

///

+0

Похоже, что он работает, если я ссылаюсь на функции1.js и functions3.js в начале functions.intellisense.js. –

ответ

1

Я уже прокомментировал, как вам нужно настроить свои ссылки - вам нужно объявить функции до того, как они будут переданы intellisense.nnate, если вы хотите, чтобы они появлялись в IntelliSense. Объявление функции управляет списком завершения IntelliSense, аннотированный вызов обновляет документацию для уже объявленной функции.

Хотелось бы иметь возможность предварительно документировать функции. Возможно, добавьте идеи с помощью «TODO», так что, если я не написал функцию Test.Add(), я все равно мог бы поместить ее в файл intellisense, и она выведет «TODO: добавляет тест».

Вы можете сделать это, написав свой собственный помощник для IntelliSense, например:

function stubFunction(functionName, annotation) { 
    if (!window[functionName]) { 
     window[functionName] = function() { }; 
    } 
    intellisense.annotate(window[functionName], annotation); 
} 

Вызов stubFunction бы создать объявление функции заглушки и аннотацию в одном вызове:

stubFunction("funcA", function() { 
    /// <signature> 
    /// <summary>Function A does something important</summary> 
    /// </signature> 
}); 

Теперь, если вы введете func в редактор, вы увидите, что funcA отображается в списке завершения с вашими комментариями к документации.

Эта утилита stubFunction может быть помещена в функции.intellisense.js, а затем использована в этом файле для предварительной документирования всех ваших функций.

0

Если я изменяю функции.intellisense.js, чтобы включить ссылки на файлы сценариев, содержащие фактические функции, он работает, как ожидалось.

/// <reference path="functions1.js" /> 
/// <reference path="functions3.js" /> 
intellisense.annotate(funcA, function() { 
    /// <signature> 
    /// <summary>Function A does something important</summary> 
    /// </signature> 
}); 

intellisense.annotate(funcC, function() { 
    /// <signature> 
    /// <summary>Function C does something equally important</summary> 
    /// <param name="message">message</param> 
    /// </signature> 
}); 

Я надеялся избежать этого, так как я сказал, что функции могут быть окурки для функций, которые даже не были написаны еще, но это по-прежнему работает. Я подожду, чтобы принять этот ответ, чтобы узнать, есть ли у Иордании больше рекомендаций.

+1

Спасибо за все детали вашего обновления. Вызовы intellisense.annotate будут работать только в том случае, если целевые функции уже объявлены до того, как будут сделаны аннотатные вызовы. Итак, как вы обнаружили, ссылаясь на файлы functions1.js и functions3.js перед вызовами intellisense.nnate, funcA и funcC объявляются и могут быть аннотированы. Я бы рекомендовал поместить эти две ссылки в _reference.js прямо над строкой, которая включает функции.intellisense.js. Затем все ваши ссылки поддерживаются в одном месте. –

 Смежные вопросы

  • Нет связанных вопросов^_^