需要集思广益。我遇到了 Javascript 库(jQuery、ExtJS 等)的问题,这些库似乎无法与 Visual Studio 2008 中内置的 Javascript Intellisense 配合使用。它们提供了 intellisense 无法理解的某些实用程序辅助函数。
即。 ExtJS代码
// convenience function to create namespace object placeholders
Ext.namespace("Root.Sub.Subsub");
或jQuery
// doing the same thing in jQuery
$.extend(window, {
Root: {
Sub: {
Subsub: {}
}
},
});
甚至(我很同情你要维护这段代码)
$.extend(window, { Root: {}});
$.extend(Root, { Sub: {}});
$.extend(Root.Sub, { Subsub: {}});
这些调用的最终结果基本相同。 它们都不会使 Root
命名空间对 Visual Studio 2008 中的 Javascript Intellisense 可见。如果我们知道 intellisense 的工作原理,我们可能能够克服这种情况。
是否有可能说服 Intellisense 显示/识别这些 namespace ,而无需像这样直接编写对象:
Root = {
Sub: {
Subsub: {}
}
};
我承认第一个 jQuery 调用与这个非常相似,但最好使用扩展功能来防止删除/覆盖现有功能/命名空间。
问题
我们应该如何使用这些实用函数来使 Intellisense 工作?
欢迎任何可以对此有所启发的集思广益答案?
编辑
我发现如果使用实用函数创建的 namespace 是在外部定义的(即在不同的脚本文件中)并且您引用该文件,则它们会显示:
/// <reference path="different.script.file.js" />
在这种情况下一切都很好。但是,如果您在同一个文件中调用实用程序函数,它们不会列在智能感知下拉列表中。
最佳答案
就 jQuery 而言:看看 this blog post . This post也是一本好书。
我已经尝试了很多方法来让 Visual Studio 识别 JavaScript 对象和命名空间——我发现唯一可靠的解决方案就是您自己提到的:
var RootNamespace = {
SubNamespace: {
SubSubNamespace: {}
}
};
更新:
开发人员 1 写道:
var RootNamespace = {
SubNamespace: {
SubSubNamespace: {}
}
};
开发人员 2 扩展:
RootNamespace.SubNamespace.AnotherSubNamespace = {
alertHelloWorld: function ()
{
alert("Hello World!");
}
};
关于Javascript Intellisense 没有显示所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424183/