从Eclipse迁移到VSCode,Workspace

时间:2016-09-16 03:24:15

标签: eclipse visual-studio-code ide

我将开始只用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。您如何找到调用某个函数的所有位置,请记住,在项目中可能存在许多具有相同名称和许多文件的其他函数。

感谢您的帮助,感谢阅读。

2 个答案:

答案 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的密钥绑定库。