首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >需要js ruins代码导航

需要js ruins代码导航
EN

Stack Overflow用户
提问于 2011-12-14 18:07:36
回答 2查看 6.1K关注 0票数 19

require.js说明了在模块内定义对象的方式,其中define([requiremens], object)是最好的方式。

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

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

问题是我有:

代码语言:javascript
复制
// 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;
});

现在以相同的方式定义UI/消息,并返回object。

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

有没有专门针对pycharm的或者require.js通用的解决方案来解决这个问题?当你有很多代码时,导航就会变得混乱,这就是为什么我首先使用IDE的原因!

更糟糕的是:编辑器永远不知道对象有什么函数!

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

我不确定require.js优化器是否会正确地使用它。Require.js文档声明非常清楚,远离全局变量。

EN

回答 2

Stack Overflow用户

发布于 2011-12-15 00:59:55

这是一个投票,请星号/ known issue

在问题描述中:

在加载模块时,dojo库切换到了AMD的格式

(),而不是dojo.require()。以前我可以在dojo.require('path.to.someJs')上使用Ctrl+B跳转到声明。这不适用于新的格式定义(‘path/to/someJs’,...)。

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

票数 8
EN

Stack Overflow用户

发布于 2013-07-16 15:24:11

如果您使用CommonJs wrapper定义模块并使用导出和模块参数,则WebStorm (至少6.0.2)支持使用RequireJ进行代码导航:

代码语言:javascript
复制
//foo.js
define(function(require, exports, module) {
    //use exports to expose properties for code navigation in other modules
    exports.bar = function() {}
});

显然,即使使用它的模块不使用CommonJs包装器格式,它也可以工作:

代码语言:javascript
复制
define(['./foo'], function(foo) {
    foo.bar(); //code navigation works here
}

如果其他IDE使用与CrazyCoder所说的相同的JavaScript插件,那么它也可以在它们的新版本上工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8502682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档