目录
- 一.pyexecjs的使用
- 二.subprocess调用异步JS
- 三.express异步接口调用
一.pyexecjs的使用
PyExecJS 是一个 python 库,用于在 Python 环境中执行 JavaScript 代码。它实际上是对 ExecJS 库的 Python 封装,ExecJS 本身是一个通用的 javascript 运行环境的抽象层。使用 PyExecJS,你可以在 Python 中执行 JavaScript 代码,而无需启动一个完整的 JavaScript 解释器。它的目标是提供一种简便的方式,使得在 Python 中嵌入 JavaScript 代码成为可能,特别是对于需要JavaScript 交互的项目而言。
安装方式:
pip install PyExecJS -i https://pypi.tuna.tsinghua.edu.cn/simple/
基本使用方法
(注:导入不需要py,下载要py)
import execjs # 导入
# 生成JavaScript运行环境,环境名可以指定
node = execjs.get() # 安装nodejs后,会得到运行环境名为:Node.js (V8)
with open('1.js', encoding='utf-8') as f:
js_code = f.read()
print(js_code)
# 编译js代码
ctx = node.compile(js_code) # compile方法去加载js代码
# 两种方式执行js函数
data1 = ctx.eval('get_data({"aa": "123"})') # eval方法中,整个函数调用包含在字符串内
print(data1)
data2 = ctx.call('get_data', ['123']) # call方法中,第一个参数是函数名(str),后面接参数
print(data2)
js代码
function get_data(aa){
return aa
}
输出

以上方法只针对非异步的js代码
二.subprocess调用异步JS
在 Python 中,subprocess 模块用于创建和管理子进程。可以通过端口调用JS代码
本质是通过端口调用js代码注意路径,python代码如下:
import subprocess
# 使用 subprocess 模块执行 Node.js 命令
result = subprocess.run(["node", "1.js", "daochu", "7", "5"], capture_output=True, text=True)
# 输出执行结果
print(f"Node.js 执行结果: {result.stdout.sthttp://www.devze.comrip()}")
JS代码(注意是输出console.log,而不是返回return)
function getAsyncData() {
return new Promise(function (resolve, reject) {
resolve(123)
});
}
getAsyncData().then(
function (data){
console.log(data)
}
)
输出结果

三.express异步接口调用
简单来说,Express 是基于 Node.javascriptjs 平台,快速、开放、极简的 Web 开发框架。
下载:
npm install express -S
基本用法
// 1.导入 express
const express = require('express');
// 2.创建 web 服务器
const app = express();
// 3.get请求 req是请求对象 res响应对象
app.g编程客栈et('/user', function(req, res){
// 调用express提供的res.send()方法,向客户端响应一个JSON对象
res.send('hello world')
})
// 4.启动 web 服务器
app.listen(8080, function(){
console.log('express server running at http://127.0.0.1:8080/user');
})
响应返回的结果

所以简单来说如果是异步js代码
// 1.导入 express
const express = require('express');
// 2.创建 web 服务器
const app = express();
function getAsyncData(){
return new Promise(function (resolve, reject) {
resolve('hello world');
});
}
// 3.get请求 req是请求对象 res响应对象
app.get('/user', function(req, res){
// 调用express提供的res.send()方法,向客户端响应一个JSON对象
getAsyncData().then(function(data){
res.send(data);
});
})
// 4.启动 web 服务器
app.listen(8080, function(){
console.log(" http://127.0.0.1:8080/user/")
console.log('express server running at http://127.0.0.1:8080http://www.devze.com');
})
然后在本地请求htthttp://www.devze.comp://127.0.0.1:8080/user/
import requests url = "http://127.0.0.1:8080/user/" response = requests.get(url) print(response.text) print(response)
结果如下,也是顺利调用了

到此这篇关于Python调用JS代码的方法大全的文章就介绍到这了,更多相关Python调用JS代码内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
加载中,请稍侯......
精彩评论