JavaScript – die diplomatische Sprache: Wie sie sich mit Python, C++ und anderen verständigt
\n\nDie Entwicklungswelt ist längst nicht mehr „einsprachig“. Vorbei sind die Zeiten, in denen Projekte ausschließlich in PHP oder Java geschrieben wurden. Heute leben wir im Zeitalter des polyglotten Programmierens, und JavaScript spielt in diesem Ökosystem die Rolle des Chefdiplomaten. Es kann mit jedem zusammenarbeiten: von Python bis C++, von Go bis Rust. Die Frage ist nur, wie genau man das organisiert.
\n\nLassen Sie uns herausfinden, wie man JavaScript mit anderen Sprachen integriert. Ohne Umschweife, mit echten Codebeispielen und praktischen Szenarien. Sie erfahren, wie Sie Frontend und Backend dazu bringen, im Einklang zu arbeiten, anstatt sich zu bekriegen.
\n\nWarum überhaupt JavaScript mit anderen Sprachen kombinieren?
\n\nMan könnte meinen, warum komplizieren? Es gibt Node.js – schreib alles in JS. Aber die Realität ist komplexer. Jede Sprache hat ihre eigenen Superkräfte:
\n\n- \n
- Python – der König des maschinellen Lernens und der Datenwissenschaft. JS ist hier machtlos. \n
- C++ – maximale Leistung für Spiele und Grafik. \n
- Java – Zuverlässigkeit für Unternehmenslösungen. \n
- Go – Asynchronität und Geschwindigkeit in Microservices. \n
Die Integration von JavaScript mit diesen Sprachen ermöglicht es, das Beste aus jeder Welt zu nutzen. Sie erhalten eine schöne Oberfläche in React und leistungsstarke Analysen in Python unter der Haube. Klingt wie ein Traum? Machen wir ihn wahr.
\n\nMöglichkeiten der Integration von JavaScript mit Python
\n\n1. Python aus Node.js über child_process aufrufen
\n\nDer einfachste und direkteste Weg ist, ein Python-Skript als untergeordneten Prozess zu starten. Das ist nicht elegant, funktioniert aber überall.
\n\n// app.js – Node.js ruft Python auf\nconst { exec } = require('child_process');\n\nfunction analyzeSentiment(text) {\n return new Promise((resolve, reject) => {\n exec(`python3 sentiment.py "${text}"`, (error, stdout, stderr) => {\n if (error) return reject(error);\n resolve(stdout.trim());\n });\n });\n}\n\n// Verwendung\n(async () => {\n const result = await analyzeSentiment('JavaScript ist die beste Sprache!');\n console.log(`Stimmung: ${result}`);\n})();\n\n\nUnd hier das Python-Skript selbst:
\n\n# sentiment.py\nimport sys\nfrom textblob import TextBlob\n\ntext = sys.argv[1]\nblob = TextBlob(text)\nprint(blob.sentiment.polarity)\n\n\nNachteil: Jeder Aufruf ist ein neuer Prozess. Verwenden Sie für die Produktion python-shell oder zerorpc.
2. Verbindung über REST API (Flask + Node.js)
\n\nEin besserer Ansatz ist, einen Microservice in Python zu starten und über HTTP mit ihm zu kommunizieren.
\n\n# server.py – Python Flask API\nfrom flask import Flask, request, jsonify\nimport joblib\n\napp = Flask(__name__)\nmodel = joblib.load('model.pkl')\n\n@app.route('/predict', methods=['POST'])\ndef predict():\n data = request.json\n prediction = model.predict([data['features']])\n return jsonify({'result': prediction.tolist()})\n\nif __name__ == '__main__':\n app.run(port=5000)\n\n\nAuf der JavaScript-Seite:
\n\n// client.js – Node.js Client\nasync function getPrediction(features) {\n const response = await fetch('http://localhost:5000/predict', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ features })\n });\n return response.json();\n}\n\n// Beispielaufruf\ngetPrediction([1.2, 3.4, 5.6]).then(console.log);\n\n\nDieser Ansatz wird in 90% der Fälle bei der Integration von JavaScript mit Python verwendet. Microservice-Architektur regiert.
\n\n3. Python im Browser: Brython und Pyodide
\n\nMöchten Sie Python direkt im Frontend ausführen? Verwenden Sie Pyodide – den WebAssembly-Port von CPython.
\n\n<!DOCTYPE html>\n<html>\n<head>\n <script src="https://cdn.jsdelivr.