如何在 vscode 中使用自己的 javascript 文件获取智能感知
Posted
技术标签:
【中文标题】如何在 vscode 中使用自己的 javascript 文件获取智能感知【英文标题】:How to get intellisense with own javascript files in vscode 【发布时间】:2018-01-14 21:15:17 【问题描述】:我正在使用 vscode Version 1.14.2 (1.14.2)
并且我正在尝试为我自己的 javascript 文件获取智能感知。为了测试这一点,我创建了两个文件 test.js
和 main.js
。在test.js
我有以下代码...
Test = ;
let testObj = ;
Test.getAllTest = function()
return testObj;
;
在我的main.js
文件中,我有以下内容...
/// <reference path="./test.js" />
Test.
我想对我自己的代码进行智能感知。在vscode中可以实现吗?
2017 年 8 月 10 日更新
如您所见,前面的代码是一个愚蠢的 sn-p。让我粘贴我正在进行的练习中的代码...
"use strict";
var $ = require("../lib/node_modules/jquery/dist/jquery.min.js");
let line = console.log;
let bakery = ;
bakery.loadInventory = function()
return new Promise(function(resolve, reject)
$.ajax(
url: "https://cake-2444b.firebaseio.com/ccakes.json"
)
.done(function(data)
resolve(data);
)
.fail(function(error)
reject(error);
);
);
;
module.exports = bakery;
jQuery 是用--save-dev
安装的,我怀疑我不能因为这个原因require('jQuery')
。前面的代码存在于一个名为bakery-factory.js
的文件中。贝娄,我附上了一张屏幕截图,显示智能感知不适用于该模块。
我想补充一点,我正在使用 Grunt 来运行一些任务。我不确定这是否与智能感知问题有关。我对编辑器非常满意,我希望它能够正常工作。
2017 年 8 月 11 日更新
按照您的建议,我得到了它的工作......
let bakery =
loadInventory: function(...
我以前的方法不行……
let bakery =
bakery.loadInventory = function(...
谢谢你的解释!!
【问题讨论】:
【参考方案1】:VSCode 1.15 在这种情况下只能提供有限的智能感知。有两个问题:
我们不支持隐式全局分配,例如 Test = ...
。您需要声明变量var Test = ...
,然后创建一个简单的jsconfig.json
文件,以便您工作区中的所有JS 文件共享相同的全局上下文。
我们的智能感知也无法识别在创建对象后添加到对象的属性。这是一个错误并由以下人员跟踪:https://github.com/Microsoft/TypeScript/issues/10868 相反,您需要在分配时声明命名空间成员:var Test = getAllTest: ...
如果可能,我建议您考虑使用具有明确定义的导入和导出的适当模块。这些将提供更好的 IntelliSense 体验,更重要的是,使代码更易于维护和推理。
【讨论】:
以上是关于如何在 vscode 中使用自己的 javascript 文件获取智能感知的主要内容,如果未能解决你的问题,请参考以下文章