【发布时间】:2012-01-20 02:54:46
【问题描述】:
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;
});
现在 UI/Message 以相同的方式定义,并返回对象。
但是当我用请求编辑文件时,我无法通过代码导航,所以如果我想编辑 Message 对象,唯一的方法是自己打开文件并找到我需要的功能,而不是拥有IDE 为我跳转。
是否有专门针对 pycharm 或 require.js 的通用解决方法来解决此问题?当你有很多代码时,导航会变得一团糟,这就是我首先使用 IDE 的原因!
更糟糕的是:编辑器永远不知道对象有什么功能!
我可以看到的一种可能的解决方案是不使用封闭的命名空间,并在define() 调用之前声明全局变量,但在这种情况下,所有对象都应像 UI_Message、AJAX_Requests 一样调用。为了确定,我在两个不同的位置没有一些消息....
我不确定 require.js 优化器是否会正确使用它。 Require.js 文档说明的很清楚,要远离全局变量。
【问题讨论】:
-
修复了吗?
标签: javascript intellij-idea requirejs pycharm js-amd