Est-il possible d'inclure un js d'un autre avec le moteur Java Nashorn?
ScriptEngine engine = new ScriptEngineManager().getEngineByName("Nashorn");
InputStreamReader rs = new InputStreamReader(new FileInputStream(new File(.../script.js));
engine.eval(rs);
script.js
var System = Java.type('Java.lang.System');
// document.write("./test.js"); - javax.script.ScriptException: ReferenceError: "document" is not defined
// require('./test.js'); - require is not defined
test.js
System.out.println("reading test.js file");
je veux créer un script de niveau supérieur (dans cet exemple, son script.js) et l'utiliser comme bibliothèque pour d'autres scripts dans le même répertoire.
vous pouvez utiliser la fonction load()
de Nashorn
https://wiki.openjdk.Java.net/display/Nashorn/Nashorn+extensions
// can load script from files, URLs
load("foo.js"); // loads script from file "foo.js" from current directory
load("http://www.example.com/t.js"); // loads script file from given URL
// loads script from an object's properties.
// Object should have "script" and "name" properties.
// "script" property contains string code of the script.
// "name" property specifies name to be used while reporting errors from script
// This is almost like the standard "eval" except that it associates a name with
// the script string for debugging purpose.
load({ script: "print('hello')", name: "myscript.js"})
// load can also load from pseudo URLs like "nashorn:", "fx:". "nashorn:" pseudo URL scheme
// for nashorn's built-in scripts. "fx:" pseudo URL scheme for JavaFX support scripts
// load nashorn's parser support script - defines 'parse'
// function in global scope
load("nashorn:parser.js");
// load Mozilla compatibility script - which defines global functions
// like importPackage, importClass for rhino compatibility.
load("nashorn:mozilla_compat.js");
Nashorn est brillant.
Et il vient avec la méthode charge intégrée !!!
charge peut prendre une URL afin que vous puissiez exploiter d'excellentes bibliothèques JavaScript sur le CDNJS
si vous utilisez Nudge4j vous pouvez obtenir le minificateur html de kangax fonctionne exactement comme ceci:
load('https://cdnjs.cloudflare.com/ajax/libs/html-minifier/3.3.3/htmlminifier.js')
minify = require('html-minifier').minify;
input = '<div> <p> foo </p> </div>';
output = minify(input, { collapseWhitespace: true });