如何让 WebStorm 解析功能模块?
Posted
技术标签:
【中文标题】如何让 WebStorm 解析功能模块?【英文标题】:How to make WebStorm resolve modules which are functions? 【发布时间】:2015-08-15 02:05:23 【问题描述】:WebStorm 很好地解决了从 CommonJS 模块返回的函数作为方法(并读取与它们关联的 JsDoc),例如:
// utils/valid.js
/**
* Returns true no matter what.
* @param htmlElement element
* @return boolean
*/
function isValid(element)
return true;
module.exports.isValid = isValid; // exports property
当另一个文件需要这样的模块时,code completion 和 inline documentation 机制中会正确提供这样的功能。
// main.js
var isValid = require('./utils/isValid').isValid; // works well
但是,当函数作为模块导出直接返回时,这会失败
// utils/valid.js
module.exports = isValid; // exports object is a function
所以当需要这样一个模块时,WebStorm 似乎不知道它是什么:
// main.js
var isValid = require('./utils/isValid'); // doesn't work
这在我们的项目中很常见,将所有module.exports
更改为普通对象不是一种选择。有没有办法在 WebStorm 中解决这个问题?
【问题讨论】:
你如何使用它?请提供完整的样本 我在示例中添加了几行,但是我实际使用模块的方式与问题无关 - 重点是例如。按下 Ctrl+Q 应该会显示模块的内联文档,无论使用何种方式定义它jetbrains.com/webstorm/help/viewing-inline-documentation.html 我同意 Paul S,他如何使用它与问题无关。我也有这个问题,保罗你有没有进一步了解? 很遗憾没有。但是,我对此的看法是,尽管上述内容在技术上是正确的,但在架构上存在缺陷。模块的拆分过于细粒度,但无论粒度如何,最好还是坚持返回带有方法的普通对象的约定(即使它只是一个方法)。 【参考方案1】:创建一个宏来切换两种语义形式:
<iframe width="854" height="480" src="https://www.youtube.com/embed/J3YX1WIScAk" frameborder="0" allowfullscreen></iframe>
参考文献
Using Macros in the Editor - Help | WebStorm
Komodo Edit autocompletion JS object literal
【讨论】:
以上是关于如何让 WebStorm 解析功能模块?的主要内容,如果未能解决你的问题,请参考以下文章