En JDK6, ¿hay alguna manera de cargar varios scripts, cada uno en un archivo, y tener un script de referencia como método de otro script? Algo así como "incluir"?JavaScript (Rhino) use library o incluya otros scripts
Respuesta
Creo que estás después de la load() method/property del objeto global de Rhino/alcance
load("file1.js");
load("file2.js");
load("file3.js");
methodFromFileOne();
var bar = methodFromFileTwo();
var etc = dotDotDot();
Esto cargará un archivo fuente de JavaScript, similar a cómo incluir/requerirá voluntad en PHP. Una vez que cargue un archivo, podrá llamar y funcionar o usar cualquier objeto definido en el archivo cargado.
Así es como funcionan las cosas cuando se está utilizando el shell de Rhino, que es el único contexto que conozco (tu pregunta menciona el SDK de Java, que está fuera de mi área de experiencia)
Siempre que utilice el mismo alcance para ejecutar cada archivo, podrán hacer referencia a funciones y variables de archivos ejecutados previamente.
Ayuda grande, gracias –
si le toca estar tratando de hacer esto dentro de hormiga, es posible que vea este error:
<script language="javascript">
load('foo.js');
</script>
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function load.
pero se puede dejar de lado que:
<script language="javascript">
eval(''+new String(org.apache.tools.ant.util.FileUtils.readFully(new java.io.FileReader('foo.js'))));
</script>
¡El >> '' + << es de gran importancia aquí! –
Un ejemplo real de este tiempo, es decir, que ejecuta elAnalizadorcon Rhino 1.7R4.
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
...
Context context = Context.enter();
Scriptable globalScope = context.initStandardObjects();
Reader esprimaLibReader = new InputStreamReader(getClass().getResourceAsStream("/esprima.js"));
context.evaluateReader(globalScope, esprimaLibReader, "esprima.js", 1, null);
// Add a global variable out that is a JavaScript reflection of the System.out variable:
Object wrappedOut = Context.javaToJS(System.out, globalScope);
ScriptableObject.putProperty(globalScope, "out", wrappedOut);
String code = "var syntax = esprima.parse('42');" +
"out.print(JSON.stringify(syntax, null, 2));";
// The module esprima is available as a global object due to the same
// scope object passed for evaluation:
context.evaluateString(globalScope, code, "<mem>", 1, null);
Context.exit();
Después de ejecutar este código, debería ver la salida de la siguiente manera:
{
"type": "Program",
"body": [
{
"type": "ExpressionStatement",
"expression": {
"type": "Literal",
"value": 42,
"raw": "42"
}
}
]
}
Así que de hecho, el truco consiste en reutilizar el objeto globalScope
.
- 1. Interpretación de JavaScript en Java con Rhino: pausar/reanudar scripts
- 2. Rieles: incluya JavaScript externo
- 3. ¿Es posible hacer que Node.js use Rhino como el motor de Javascript?
- 4. configure rhino en javascript Eclipse
- 5. JavaScript Standard Library for V8
- 6. Javascript image editor library
- 7. JavaScript math parser library
- 8. JavaScript library pattern
- 9. Small Ajax JavaScript library
- 10. COMET javascript library
- 11. Javascript drawing library?
- 12. Javascript Gesture Library
- 13. JavaScript Library Diseño
- 14. Cómo incluir (fuente) el script R en otros scripts
- 15. Use uint o int
- 16. NSBundle, plist y otros recursos en Obj-c Static Library
- 17. Rhino, agregando código desde varios archivos javascript
- 18. Bash o Bourne Scripts?
- 19. Javascript gamification/logro library for mobile
- 20. JavaScript Boolean Search Query Builder Interface Library?
- 21. buscando en pantalla tutorial javascript library
- 22. use javascript value y doPostback?
- 23. Javascript - Use cierres con moderación?
- 24. Forma estándar de incluir javascript library desde javascript
- 25. Javascript document.getElementById en otros marcos
- 26. Use múltiples clases en otros espacios de nombres
- 27. JavaScript Curve Library con operaciones booleanas
- 28. Javascript Sprite Animation Library para Canvas Tag
- 29. ¿Cómo se puede ejecutar Javascript usando Rhino para Java en un sandbox?
- 30. C# use IDisposable o SafeHandle?
¿Está disponible fuera de la carcasa de Rhino? – Thilo
No estoy seguro, esa no es mi tasa de pago. (actualizó la pregunta para reflejar que) –