Java, nashorn正在访问另一个js文件
Java, nashorn accessing another js file
是否可以使用 java nashorn 引擎从另一个 js 中包含一个 js?
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");
我想创建顶级脚本(在本例中为 script.js)并将其用作同一目录中其他脚本的库。
你可以使用 Nashorn 的 load()
功能
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 很棒。
它带有内置加载方法!!!
load 可以 URL 所以你可以利用 CDNJS
上很棒的 JavaScript 库
如果您使用 nudge4j you can get kangax's html minifier
运行 就像这样:
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 });
是否可以使用 java nashorn 引擎从另一个 js 中包含一个 js?
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");
我想创建顶级脚本(在本例中为 script.js)并将其用作同一目录中其他脚本的库。
你可以使用 Nashorn 的 load()
功能
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 很棒。
它带有内置加载方法!!!
load 可以 URL 所以你可以利用 CDNJS
上很棒的 JavaScript 库如果您使用 nudge4j you can get kangax's html minifier 运行 就像这样:
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 });