需要js废墟代码导航

Tig*_*gra 19 javascript intellij-idea pycharm requirejs js-amd

require.js陈述define([requiremens], object)以最佳方式在模块内定义对象的方式.

因此,每个页面或其他js文件都将require()调用和接收模块作为参数.

这很好用,每个函数/模块都有自己的命名空间.

问题是我有:

// AJAX/Requests.js

define(['UI/Message'],function(Message){
var Requests={
    checkResponse:function(response){
        //1==ok
        //0==error
        //2==good message
        //3==good message, but still stop
        if(response.status==1){
            return true;
        }
        else if(response.status==2){
            Message.good(response.message);
            return true;
        }
        else if(response.status==3){
            Message.good(response.message);
            return false;
        }
        else{
            Message.bad(response.message);
            return false;
        }
    }
};
return Requests;
});
Run Code Online (Sandbox Code Playgroud)

现在,UI/Message以相同的方式定义,并返回对象.

但是当我用请求编辑文件时,我无法通过代码导航,所以如果我想编辑Message对象,唯一的方法就是自己打开文件并找到我需要的函数,而不是让IDE跳到那里为了我.

是专门针对pycharm还是针对require.js的一些解决方法来解决这个问题?当你有很多代码时,导航它就变得一团糟,这就是我首先使用IDE的原因!

更糟糕的是:编辑永远不知道对象有什么功能!

我可以看到的一种可能的解决方案是不使用封闭的命名空间,并在define()调用之前声明全局变量,但在这种情况下,所有对象都应该像UI_Message,AJAX_Requests一样被调用.为了确定,我在两个不同的位置没有一些消息....

我不确定,如果require.js优化器将正确使用它.Require.js文档说明非常清楚,远离全局变量.

Cra*_*der 8

这是一个众所周知的问题,请注明/投票.

从问题描述:

dojo库切换到AMD的格式define(),用于加载模块而不是dojo.require().以前我可以在dojo.require('path.to.someJs')上使用Ctrl + B来跳转到声明.这不适用于新格式define(['path/to/someJs]',...).

由于PyCharm,WebStorm,PhpStorm和IntelliJ IDEA共享相同的JavaScript插件,因此该问题也适用于您正在使用的产品.在修复此错误之前,您将继续观察所描述的问题.抱歉给你带来不便.

  • JetBrains已经实现了这个问题的基础知识,但是,它们仍然不支持路径配置(你只限于相对路径),你必须单击define本身才能进入模块.:( (3认同)