我将开始只用Javascript开发,因为Eclipse的js支持不如它的java,我做了一些搜索,发现VSCode现在似乎处于javascript开发的最前沿。所以,我正在从Eclipse迁移到VSCode,从不喜欢Eclipse那么多,但我对这两个命令/热键更有效。所以我会给那些不熟悉的人举个例子:
foo.js
var foo = {
doSomething: function(){
console.log("hello world");
}
}
module.exports = foo;
bar.js
var foo = require('./foo')
foo.doSomething();
假设这是在Eclipse中而且它是Java而不是Javascript:所以如果我正在查看bar.js,并且我想知道doSomething()的意图,我会按F3(Open Implementation) )在doSomething上它会直接在foo.js上实现它。
另一个命令,Workspace中的References将是另一种方式,如果我在foo.js并且我想知道在什么地方doSomething()被调用我会按Ctrl + Shift + G,并且它会显示bar.js上的确切行(以及使用它的任何其他文件)。此外,值得注意的是,它不仅仅是一个简单的搜索,它不会显示任何调用doSomething的文件,而不是foo.js中声明的doSomething。
我注意到VSCode中有一个查找所有引用,但它只适用于同一个文件。 还有一个Go To Declaration命令,它实际上很有用,但它只适用于同一个文件。如果我在bar.js上,我可以在foo.doSomething()上选择foo,使用Go To Declaration,它会将我发送到require语句。这对大文件很有用,但在一天结束时我仍然停留在require语句中,我无法快速导航到它的module.exports。
所以是的,我知道在javascript中实现这些比在java中更难,因为类/类型结构和其他一切。但这些是我的问题:
有没有办法在VSCode中实现我想要的本机?也许有一个我忽略的命令?
是否有任何扩展能够实现此目的。我记得前一段时间尝试过一次扩展但是效果不好(曾经失败/崩溃)。也许使用TypeScript / ES6,扩展工作会更容易吗?
如果没有确切的替代方案,您如何处理这些问题?您如何快速转到另一个文件中的函数声明?请记住,所需的文件也可以是node_modules上的lib。您如何找到调用某个函数的所有位置,请记住,在项目中可能存在许多具有相同名称和许多文件的其他函数。
感谢您的帮助,感谢阅读。
答案 0 :(得分:1)
要跨文件启用此支持,您需要创建一个jsconfig.json文件。
引用docs:
JavaScript IntelliSense将立即用于单个文件。如果你 使用Node.js使用的CommonJS模块系统,然后得到 立即跨模块进行智能感知。
在所有方面配置IntelliSense还有两个步骤 工作区和外部模块中的文件:
创建一个jsconfig.json文件以指示JavaScript项目。安装 外部库的TypeScript定义文件(类型)。
文档提供了有关不同设置的更多信息,但只需在项目根目录中创建名为jsconfig.json
的文件即可开始:
{
"compilerOptions": {
"target": "ES6"
},
"exclude": [
"node_modules"
]
}
如果您想了解vscode正在使用的javascript语言服务的更多信息,您可以查看Salsa文档。
答案 1 :(得分:1)
有没有办法在VSCode中实现我想要的本机?也许 有一个我忽略的命令吗?
是的,我认为你想要的是内置的。尝试按 F12 (转到定义),光标位于您要查找的符号上...有时我必须按两次才能在TypeScript中按import
编辑,但效果很好为了我。
这似乎不需要jsconfig.json
,它只对你在其他空目录中提到的两个文件起作用。但我可以想象,配置文件中的错误设置可能会阻止它。
如果要使用首选项:打开键盘快捷键命令,可以更改键绑定。不幸的是,我认为还没有一个用于模拟其他IDE的密钥绑定库。