execjs库为什么使不了call

JavaScript07

execjs库为什么使不了call,第1张

一、execjs不支持eval函数的运行,需要更换eval为return

二、execjs的call必须调用函数,可以在需要调用的js外添加function run(){}

三、execjs调用的函数内部只能运行一个函数

可以在webstorm中copy这个encode函数带上自己的用户名运行,返回的结果就是su的值,这个值在之后进行post提交的时候也会用到。

如果对加密有一定经验的同学可能一眼就会看出这个是base64编码,python中有个base64模块可以干这个事情。

pyv8 的作用是在python中执行js代码,然后可以使用js里的变量等内容。python取得javascript里面的值、javascript取得python里面的值、python和javascript里面的函数交互

mac下的安装:pip install -e git://github.com/brokenseal/PyV8-OS-X#egg=pyv8

安装后有两个文件:一个PyV8.py 另一个_PyV8.so

下面示例是执行js文件

from pyv8 import PyV8

ctxt = PyV8.JSContext()

ctxt.enter()

with open('/usr/graph.js') as f:

jsdata = f.read()# print jsdata

print ctxt.eval(jsdata)

下面是执行一段代码

import PyV8

ctxt = PyV8.JSContext()

ctxt.enter()

func = ctxt.eval("""

(function(){

function hello(){

return "Hello world."

}

return hello()

})""")print func()

则在python环境中打印出js执行的结果:Hello world.

更多信息可参考《Linux就该这么学》