Javascript AMD 模块:如何跨模块获取 Visual Studio 智能感知

Posted

技术标签:

【中文标题】Javascript AMD 模块:如何跨模块获取 Visual Studio 智能感知【英文标题】:Javascript AMD Modules: How to get Visual Studio intellisense across modules 【发布时间】:2016-10-17 23:13:32 【问题描述】:

javascript 上下文中查看异步模块定义 (AMD) 后,我想知道如何在 Visual Studio 2010 中为依赖模块获取智能感知。

例如给定模块A:

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

和相应的模块B:

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

然后我想对模块 B 中的模块 A(表示为参数 a)进行完整的智能感知。请注意,这两个模块都将在单独的文件中定义(在本例中为 A.js 和 B.js)。

【问题讨论】:

我为 Visual Studio 发布了一个类似问题的错误:connect.microsoft.com/VisualStudio/feedback/details/2825862(虽然我发布时它不理解我的登录信息)。如果类似情况解决了您的问题,请评论该问题。 【参考方案1】:

这里的评论帮助我让它部分工作:Comment on GitHub Repo

基本上,我必须确保:

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

位于 _references.js 文件的顶部。它适用于“require”和“define”块,但似乎不适用于“define”块内的匿名函数。

【讨论】:

【参考方案2】:

看起来 RequireJS 的作者在这里致力于 Intellisense 支持: https://github.com/jrburke/requirejs-intellisense

很遗憾,我还没有让“魔法”发挥作用。

更新:我确实让它在某些情况下工作。特别是当所有 js 文件都在同一个文件夹中时,它的效果很好。

【讨论】:

我将所有 javascript 文件放在同一个文件夹中并“引用”了 require.js(将文件拖到编辑器以获取参考注释)。我发现开始工作通常需要几秒钟。我确实让它适用于其他一些文件夹结构,但它似乎非常有限。另外我认为它只适用于要求调用(不定义)。 我得到了define和require函数(即'require'显示在默认模块定义中的智能感知中)。但是我无法获得测试或人的智能感知,即“测试”。没有列出 numberProperty 和 childObject。这就是我所说的“完整”智能感知。 得到它的工作,这就是我所做的:1. 克隆 github.com/jrburke/requirejs-intellisense 2. 在 vs 11 中创建了一个空的网络应用程序 sln(vs 10 对我不起作用) 3. 复制了所有 js 文件从 test 到 sln 4. 打开 default.js 并删除 'js/' 前缀(person 和 test 不在子路径中) 5. 添加“/// ”到default.js 顶部 6. 人参数现在应该有智能感知 7. 打开 test.js 并添加空依赖数组,即定义现在应该是 "define([], function () " 8. 测试参数,默认.js 现在有了智能感知,耶:D

以上是关于Javascript AMD 模块:如何跨模块获取 Visual Studio 智能感知的主要内容,如果未能解决你的问题,请参考以下文章

该如何理解AMD ,CMD,CommonJS规范--javascript模块化加载学习总结

该如何理解AMD ,CMD,CommonJS规范--javascript模块化加载学习总结

Javascript模块化编程:AMD规范

Javascript模块化编程:AMD规范

Javascript模块化编程:AMD规范

Javascript的AMD模块化规范详解