execjs的使用

1、安装PyExecJS包

pip3 install pyexecjs

2、本地安装Node.js:

  • 执行js有时需要浏览器环境,需要window对象和document对象,所以需要安装Node.js环境

3、Node中安装jsdom模块 npm install jsdom 

4、JS文件开头添上下述固定代码

//解决TextEncoder is not defined
const textencoding = require('text-encoding');
TextEncoder = textencoding.TextEncoder;
TextDecoder = textencoding.TextDecoder;

//解决浏览器环境问题
const jsdom = require("jsdom");
const {JSDOM} = jsdom;
const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>');
window = dom.window;
document = window.document;
XMLHttpRequest = window.XMLHttpRequest;

5、python脚本中execjs的使用

import execjs #导入

#生成JavaScript运行环境,环境名可以指定
node = execjs.get() #安装nodejs后,会得到运行环境名为:Node.js (V8)

with open('js_code.js',encoding='utf-8') as f:
    js_code = f.read()

#编译js代码
ctx = node.compile(js_code, cwd=r'E:\Nodejs\node_modules\npm\node_modules') #compile方法去加载js代码,参数cwd指定本地安装模块所在目录

#两种方式执行js函数
data1 = ctx.eval('getParam({"city":"北京"})')  #eval方法中,整个函数调用包含在字符串内
data2 = ctx.call('getParam',{'city':'北京'})  #call方法中,第一个参数是函数名(str),后面接参数

6、方法简介

#execjs是python操作js代码的模块
#方法
execjs.get()
    #参数:无
    返回值:node
    返回值意义:node.js对象,可编译js代码
    作用:获取node.js对象,可编译js代码

#node是通过execjs.get()获取到的对象,可用于编译js代码
#方法
node.compile(code, cwd="")
#参数:
    code:string,js代码字符串
    cwd:node的modules的安装地址
    返回值:执行js代码对象
    返回值意义:获取执行js代码对象,可执行js代码
    作用:获取执行js代码对象,可执行js代码

#ctx是通过node.compile(code, cwd=“”)获取的执行js代码对象
#方法
ctx.eval(function_name)
#参数:
    function_name:string,要执行的方法名
    返回值:方法的返回参数
    返回值意义:执行方法,获取方法的返回值参数
    作用:执行方法,获取方法的返回值参数

 

posted @ 2022-09-19 16:21  Einewhaw  阅读(1652)  评论(0编辑  收藏  举报