多个js函数文件的单个intellisense文件?

时间:2013-04-19 21:20:33

标签: visual-studio-2012 intellisense javascript-intellisense

我有functions1.js,functions2.js和functions3.js。每个都有一个函数,funcA,funcB和funcC。我创建了一个名为“functions.intellisense.js”的文件,并将其添加到_reference.js。然后我在test.js文件中添加了对_reference.js的引用。

为什么智能感知不起作用?

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:添加测试”。

2 个答案:

答案 0 :(得分:1)

我已经评论过你如何设置你的引用 - 你必须在它们传递给intellisense.annotate之前声明函数,如果你想让它们出现在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实用程序可以放在functions.intellisense.js中,然后在该文件中用于预先记录所有函数。

答案 1 :(得分:0)

如果我修改functions.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>
});

我希望避免这种情况,因为我说这些函数可能是尚未编写的函数的存根,但这仍然有效。我等着接受这个答案,看看乔丹是否有更多的建议。