PythonExecJS-JavaScript引擎-使用Python类
我正在尝试使用Python中的JavaScript引擎 我需要在JavaScript中使用Python类,反之亦然-在Python中使用JavaScript代码。我该怎么做 在Java中,我有工作代码:PythonExecJS-JavaScript引擎-使用Python类,javascript,java,python,node.js,v8,Javascript,Java,Python,Node.js,V8,我正在尝试使用Python中的JavaScript引擎 我需要在JavaScript中使用Python类,反之亦然-在Python中使用JavaScript代码。我该怎么做 在Java中,我有工作代码: package test.test; import javax.script.Bindings; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineM
package test.test;
import javax.script.Bindings;
import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.script.SimpleBindings;
public class JavaScriptInJava {
public static void main(String[] args) throws ScriptException, NoSuchMethodException {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
/* ----------------------------------------------------------------------- */
// Work with Java class from JavaScript:
String userScript =
"user1.setName(\"Test User\"); "
+ "print( user1.getName() ); ";
Bindings bindings = new SimpleBindings();
User u = new User();
bindings.put("user1", u);
engine.eval(userScript, bindings);
// Work with Java class from JavaScript.
/* ----------------------------------------------------------------------- */
// Use JavaScript function in Java code:
String math =
"function addition(a, b) { "
+ " return a+b; "
+ "} "
+ " "
+ "function substraction(a, b) { "
+ " return a-b; "
+ "} "
+ " ";
engine.eval(math);
Invocable inv = (Invocable) engine;
int a = 10;
int b = 5;
System.out.println("A=" + a + " B=" + b);
Object aPlusB = inv.invokeFunction("addition", a, b);
System.out.println("A+B = " + aPlusB);
Object[] inputParams = {
new Integer(10),
b
};
Object aMinusB = inv.invokeFunction("substraction", inputParams);
System.out.println("A-B = " + aMinusB);
int x = (Integer) aPlusB + 1;
System.out.println("aPlusB + 1 = " + x);
// Use JavaScript function in Java code.
/* ----------------------------------------------------------------------- */
}
}
User.java
如何将其重写为Python
import execjs
execjs.runtime = 'Node'
class Clazz:
a = 10
b = 20
c = "test"
def add(self):
return self.a + self.b
x = Clazz()
print x.add()
ctx = execjs.compile("""
function add(x, y) {
return x + y;
}
""")
print ctx.call("add", 1, 2)
在Python中使用JavaScript函数是可以的。但是我不能在JavaScript中使用Python类/变量。在JavaScript中与PyExecJS一起使用Python类是不可能的。请参考PyV8或其他Py JS库
import execjs
execjs.runtime = 'Node'
class Clazz:
a = 10
b = 20
c = "test"
def add(self):
return self.a + self.b
x = Clazz()
print x.add()
ctx = execjs.compile("""
function add(x, y) {
return x + y;
}
""")
print ctx.call("add", 1, 2)