JS 調(diào)用 Python 的方法
簡(jiǎn)介
在 web 開(kāi)發(fā)中,有時(shí)需要在 javascript (js) 代碼中調(diào)用 python 代碼以擴(kuò)展 js 的功能或訪(fǎng)問(wèn) python 特有的庫(kù)和數(shù)據(jù)源。本篇文章將介紹幾種在 js 中調(diào)用 python 的方法。
使用 Node.js
Node.js 是一個(gè)流行的 JavaScript 運(yùn)行時(shí)環(huán)境,它允許你在服務(wù)器端執(zhí)行 JavaScript 代碼。在 Node.js 中,可以使用 child_process 模塊調(diào)用 Python 代碼。以下是一個(gè)示例:
const { exec } = require('child_process'); exec('python script.py', (error, stdout, stderr) => { if (error) { console.error(`error: ${error.message}`); return; } console.log(`stdout: ${stdout}`); console.log(`stderr: ${stderr}`); });
登錄后復(fù)制
使用 WebAssembly
WebAssembly (WASM) 是一種二進(jìn)制格式,允許在 Web 瀏覽器中運(yùn)行編譯后的代碼。你可以使用 Python 編譯器(如 Emscripten)將 Python 代碼編譯成 WASM 模塊,然后在 JS 代碼中加載和調(diào)用它。以下是一個(gè)示例:
fetch('script.wasm') .then(response => response.arrayBuffer()) .then(buffer => WebAssembly.instantiate(buffer)) .then(({ instance }) => { // 調(diào)用 Python 函數(shù) const result = instance.exports.my_python_function(); console.log(result); });
登錄后復(fù)制
使用 Python 腳本服務(wù)器
另一種方法是在服務(wù)器端運(yùn)行一個(gè) Python 腳本服務(wù)器,并使用 AJAX 調(diào)用(如 XMLHttpRequest)從 JS 代碼向該服務(wù)器發(fā)送請(qǐng)求。以下是一個(gè) Python 服務(wù)器示例:
import flask app = flask.Flask(__name__) @app.route('/my_python_function', methods=['POST']) def my_python_function(): data = flask.request.get_json() result = my_python_function(data) return flask.jsonify({'result': result}) app.run()
登錄后復(fù)制
在 JS 中,你可以使用 XMLHttpRequest 發(fā)送請(qǐng)求并接收響應(yīng):
const xhr = new XMLHttpRequest(); xhr.open('POST', '/my_python_function'); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onload = function() { const result = JSON.parse(xhr.responseText).result; console.log(result); }; xhr.send(JSON.stringify({ ... }));
登錄后復(fù)制