require.js
指定了使用 define([requirements], 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/消息是以相同的方式定义并返回对象。但是,当我使用requests编辑文件时,我无法通过代码导航,所以如果我想编辑Message对象,唯一的方法是自己打开文件并找到需要的函数,而不是让IDE为我跳转到那里。
有没有适用于Pycharm特定或常见的require.js的解决方法来解决这个问题?当你有很多代码时,导航它变得混乱不堪,这就是我首先使用IDE的原因!
更糟糕的是:编辑器永远不知道函数对象具有什么功能!
我能看到的一个可能的解决方案是不使用封闭的名称空间,并在`define()`调用之前声明全局变量,但在这种情况下,所有对象都应该像UI_Message, AJAX_Requests这样被调用。为了确保我没有将某些消息放在两个不同的位置...
而且我不确定require.js优化器是否会正确使用它。Require.js文档非常清楚地指出,要远离全局变量。