javascript - style - noscript tag
Requerir js ruinas código de navegación (2)
require.js
indica la manera de definir objetos dentro de módulos con define([requiremens], object)
como la mejor manera.
Así que cada página, u otro archivo js, require()
llamar y recibir módulos como parámetros.
Esto funciona bastante bien, cada función / módulo tiene su propio espacio de nombres.
El problema es que tengo:
// 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;
});
Ahora la interfaz de usuario / mensaje se define de la misma manera y devuelve el objeto.
Pero cuando edito un archivo con solicitudes, no puedo navegar por código, así que si quiero editar el objeto de Mensaje, la única forma es ir y abrir el archivo yo mismo y encontrar la función que necesito, en lugar de que el IDE salte allí. para mi.
¿Hay alguna solución para pycharm específicamente o para requerir.js en común para resolver este problema? Cuando tienes un montón de código, se convierte en un lío para navegarlo, ¡por eso uso un IDE en primer lugar!
Y lo que es peor: ¡el editor nunca sabe qué funciones tienen los objetos!
La única solución posible que puedo ver es no usar espacios de nombres adjuntos y declarar una variable global antes de la llamada define()
, pero en este caso todos los objetos se llamarán como UI_Message, AJAX_Requests. Para estar seguro, no tengo ningún mensaje en dos ubicaciones diferentes ...
Y no estoy seguro, si require.js optimizer usará esto correctamente. La documentación de Require.js es muy clara, para mantenerse alejado de las variables globales.
Es un problema conocido , por favor, estrella / voto.
De la descripción del tema:
La biblioteca dojo cambió al formato de AMD define () para cargar módulos en lugar de dojo.require (). Anteriormente, pude usar Ctrl + B en dojo.require (''path.to.someJs'') para saltar a la declaración. Esto no funciona en el nuevo formato define ([''path / to / someJs]'', ...).
Como PyCharm, WebStorm, PhpStorm e IntelliJ IDEA comparten el mismo complemento de JavaScript, este problema también se aplica al producto que está utilizando. Seguirá observando el problema descrito hasta que se solucione este error. Lo siento por los inconvenientes ocasionados.
WebStorm (al menos 6.0.2) admite la navegación de códigos con RequireJs si está definiendo sus módulos con el contenedor de CommonJs y usa las exportaciones y los argumentos de los módulos:
//foo.js
define(function(require, exports, module) {
//use exports to expose properties for code navigation in other modules
exports.bar = function() {}
});
Aparentemente, funciona incluso si el módulo que lo usa no usa el formato de contenedor de CommonJs:
define([''./foo''], function(foo) {
foo.bar(); //code navigation works here
}
Si los otros IDE utilizan el mismo complemento de JavaScript que CrazyCoder dijo, también puede funcionar en sus nuevas versiones.