【发布时间】:2019-11-15 23:57:17
【问题描述】:
这在技术上并没有错,所以我没有在 GitHub 上提交错误,但似乎应该有更好的行为(或者也许是我可以定义导出的更好方法)。
说我有:
function one() {
// do stuff
}
function two() {
one()
}
module.exports = {one, two};
当我需要这个模块时,在另一个文件中,one 和 two 都显示为对象属性(蓝色图标)。 VSCode 似乎没有认识到它们实际上是函数。如果您定义命名的匿名函数(例如 module.exports = {one: function () {}};),这是相同的行为,这样编写时是有意义的。但是,如果我只是想让一个函数在导出中显示为一个函数,我似乎可以让它工作的唯一方法是:
module.exports = {
one() { /* do stuff */ },
two() { /* do more stuff */},
};
这在某些情况下有效,但如果two 需要调用one 并且两个函数都需要导出,则必须使用this. 访问其他成员。
如何在一个模块中定义一堆可以相互利用的函数,并将它们全部导出,以便它们在 VSCode 的其他模块中显示为函数(紫色图标)?
编辑
这里的问题是让 VSCode 在其他模块需要它们时识别和提示函数,而不是显示为模块的“属性”。
【问题讨论】:
-
我没有看到您的两个
module.exports语句之间有任何区别(从 Javsscript 的角度来看)。他们都完成了完全相同的事情。两者都导出具有两个属性的对象,每个属性的值都是一个函数。所以,我想这完全是一个关于 VSCode 中蓝色图标的问题。 -
从 Javascript 的角度来看,它们的工作方式相同,但是在 VSCode 中,它在第一个示例中将它们标记为(属性)并带有蓝色图标,而在第二个例子。当您从同一个文件中调用函数时,它们被标记为紫色(函数),因此似乎应该有一种方法可以使导出的函数看起来相同以区分导出的变量和函数。
标签: javascript node.js visual-studio-code